Detailed Description
OS instance language (OSiL) format file reader.
Definition in file reader_osil.c.
#include "blockmemshell/memory.h"
#include "nlpi/pub_expr.h"
#include "scip/cons_bounddisjunction.h"
#include "scip/cons_linear.h"
#include "scip/cons_nonlinear.h"
#include "scip/cons_quadratic.h"
#include "scip/cons_sos1.h"
#include "scip/cons_sos2.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" |
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) |
Macro Definition Documentation
◆ READER_NAME
#define READER_NAME "osilreader" |
Definition at line 51 of file reader_osil.c.
Referenced by SCIPincludeReaderOsil().
◆ READER_DESC
#define READER_DESC "file reader for OS instance language (OSiL) format" |
Definition at line 52 of file reader_osil.c.
Referenced by SCIPincludeReaderOsil().
◆ READER_EXTENSION
#define READER_EXTENSION "osil" |
Definition at line 53 of file reader_osil.c.
Referenced by SCIPincludeReaderOsil().
Enumeration Type Documentation
◆ CONSTYPE
enum CONSTYPE |
type of constraint
Enumerator | |
---|---|
LINEAR | linear constraint |
QUADRATIC | quadratic constraint |
NONLINEAR | general nonlinear constraint |
Definition at line 60 of file reader_osil.c.
Function Documentation
◆ readVariables()
|
static |
create variables with bounds and type according to xml data
- Parameters
-
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 74 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().
◆ readObjective()
|
static |
setup linear coefficients and constant of objective and objective sense
- Parameters
-
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 288 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().
◆ readConstraints()
|
static |
setup constraint sides as linear constraints
constraints are not added to the problem yet
- Parameters
-
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 434 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().
◆ readMultIncr()
|
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
- Parameters
-
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 604 of file reader_osil.c.
References FALSE, NULL, SCIPerrorMessage, SCIPisFinite, and xmlGetAttrval().
Referenced by readLinearCoefs().
◆ readLinearCoefs()
|
static |
parse linear coefficients of constraints
- Parameters
-
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 670 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().
◆ readQuadraticCoefs()
|
static |
read quadratic coefficients of constraints and objective
- Parameters
-
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 1010 of file reader_osil.c.
References FALSE, LINEAR, nterms, NULL, QUADRATIC, SCIP_CALL, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddVar(), SCIPallocClearBufferArray, SCIPcalcMemGrowSize(), SCIPconsGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPcreateConsQuadratic(), SCIPcreateVar(), SCIPerrorMessage, SCIPfreeBufferArray, SCIPgetLhsLinear(), SCIPgetNVarsLinear(), SCIPgetObjsense(), SCIPgetRhsLinear(), SCIPgetValsLinear(), SCIPgetVarsLinear(), SCIPinfinity(), SCIPreallocBufferArray, SCIPreleaseCons(), SCIPreleaseVar(), TRUE, xmlFindNodeMaxdepth(), xmlFirstChild(), xmlGetAttrval(), xmlGetName(), and xmlNextSibl().
Referenced by SCIP_DECL_READERREAD().
◆ readExpression()
|
static |
transforms OSnL expression tree into SCIP expression
- Parameters
-
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 1273 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_SIGNPOWER, 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(), SCIPexpropGetName(), SCIPfreeBufferArray, SCIPisFinite, SCIPisIntegral(), SCIPreallocBufferArray, SCIPround(), xmlFirstChild(), xmlGetAttrval(), xmlGetName(), and xmlNextSibl().
Referenced by readNonlinearExprs().
◆ readNonlinearExprs()
|
static |
read nonlinear expressions of constraints and objective
- Parameters
-
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 1944 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, 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().
◆ readSOScons()
|
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
- Parameters
-
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 2275 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, SCIPreleaseCons(), SCIPsnprintf(), TRUE, xmlFindNodeMaxdepth(), xmlFirstChild(), xmlGetAttrval(), xmlGetName(), and xmlNextSibl().
Referenced by SCIP_DECL_READERREAD().
◆ SCIP_DECL_READERCOPY()
|
static |
copy method for reader plugins (called when SCIP copies plugins)
Definition at line 2470 of file reader_osil.c.
References NULL, SCIP_CALL, SCIP_OKAY, and SCIPincludeReaderOsil().
◆ SCIP_DECL_READERREAD()
|
static |
problem reading method of reader
Definition at line 2481 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().