implementation of AMPL/MPs NLHandler that constructs a SCIP problem while a .nl file is read
Definition at line 114 of file reader_nl.cpp.
implementation of AMPL/MPs NLHandler that constructs a SCIP problem while a .nl file is read More...
Data Structures | |
class | LinearExprHandler |
class | LinearPartHandler |
class | NumericArgHandler |
class | SuffixHandler |
Public Types | |
typedef SuffixHandler< int > | IntSuffixHandler |
typedef SuffixHandler< SCIP_Real > | DblSuffixHandler |
typedef LinearPartHandler | LinearObjHandler |
typedef LinearPartHandler | LinearConHandler |
Public Member Functions | |
AMPLProblemHandler (SCIP *scip_, const char *filename) | |
AMPLProblemHandler (const AMPLProblemHandler &)=delete | |
AMPLProblemHandler & | operator= (const AMPLProblemHandler &)=delete |
~AMPLProblemHandler () | |
void | OnHeader (const mp::NLHeader &h) |
SCIP_EXPR * | OnNumber (double value) |
receive notification of a number in a nonlinear expression | |
SCIP_EXPR * | OnVariableRef (int variableIndex) |
receive notification of a variable reference in a nonlinear expression | |
SCIP_EXPR * | OnUnary (mp::expr::Kind kind, SCIP_EXPR *child) |
receive notification of a unary expression | |
SCIP_EXPR * | OnBinary (mp::expr::Kind kind, SCIP_EXPR *firstChild, SCIP_EXPR *secondChild) |
receive notification of a binary expression | |
NumericArgHandler | BeginSum (int num_args) |
receive notification of the beginning of a summation | |
SCIP_EXPR * | EndSum (NumericArgHandler handler) |
receive notification of the end of a summation | |
void | OnObj (int objectiveIndex, mp::obj::Type type, SCIP_EXPR *nonlinearExpression) |
receive notification of an objective type and the nonlinear part of an objective expression | |
void | OnAlgebraicCon (int constraintIndex, SCIP_EXPR *expr) |
receive notification of an algebraic constraint expression | |
void | OnLogicalCon (int index, LogicalExpr expr) |
receives notification of a logical constraint expression | |
LinearExprHandler | BeginCommonExpr (int index, int num_linear_terms) |
receive notification of the beginning of a common expression (defined variable) | |
void | EndCommonExpr (int index, SCIP_EXPR *expr, int) |
receive notification of the end of a common expression | |
SCIP_EXPR * | OnCommonExprRef (int expr_index) |
receive notification of a common expression (defined variable) reference | |
void | OnVarBounds (int variableIndex, double variableLB, double variableUB) |
receive notification of variable bounds | |
void | OnConBounds (int index, double lb, double ub) |
receive notification of constraint sides | |
void | OnInitialValue (int var_index, double value) |
receive notification of the initial value for a variable | |
void | OnInitialDualValue (int, double) |
receives notification of the initial value for a dual variable | |
ColumnSizeHandler | OnColumnSizes () |
receives notification of Jacobian column sizes | |
IntSuffixHandler | OnIntSuffix (fmt::StringRef name, mp::suf::Kind kind, int) |
receive notification of an integer suffix | |
DblSuffixHandler | OnDblSuffix (fmt::StringRef name, mp::suf::Kind kind, int) |
receive notification of a double suffix | |
LinearPartHandler | OnLinearObjExpr (int objectiveIndex, int) |
receive notification of the linear part of an objective | |
LinearConHandler | OnLinearConExpr (int constraintIndex, int) |
receive notification of the linear part of a constraint | |
LogicalExpr | OnBool (bool value) |
receives notification of a Boolean value <mp::expr::BOOL> | |
LogicalExpr | OnNot (LogicalExpr arg) |
receives notification of a logical not <mp::expr::NOT> | |
LogicalExpr | OnBinaryLogical (mp::expr::Kind kind, LogicalExpr lhs, LogicalExpr rhs) |
receives notification of a binary logical expression <mp::expr::FIRST_BINARY_LOGICAL> | |
LogicalExpr | OnRelational (mp::expr::Kind kind, NumericExpr lhs, NumericExpr rhs) |
void | EndInput () |
SCIP_RETCODE | cleanup () |
Definition at line 1115 of file reader_nl.cpp.
Definition at line 1126 of file reader_nl.cpp.
Definition at line 1196 of file reader_nl.cpp.
Definition at line 1210 of file reader_nl.cpp.
constructor
initializes SCIP problem and problem data
scip_ | SCIP data structure |
filename | name of .nl file that is read |
Definition at line 245 of file reader_nl.cpp.
References assert(), i, NULL, SCIP_CALL_THROW, SCIPallocBlockMemoryArray, SCIPallocClearMemory, and SCIPcreateProb().
|
delete |
|
inline |
destructor
only asserts that cleanup() has been called, as we cannot throw an exception or return a SCIP_RETCODE here
Definition at line 312 of file reader_nl.cpp.
References assert().
|
delete |
process header of .nl files
create and add variables, allocate constraints
h | header data |
Definition at line 325 of file reader_nl.cpp.
References assert(), BMScopyMemoryArray, h, i, MAX, NULL, SCIP_CALL_THROW, SCIP_MAXSTRLEN, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_INTEGER, SCIPABORT, SCIPaddVar(), SCIPallocBlockMemoryArray, SCIPcreateConsBasicLinear(), SCIPcreateConsBasicNonlinear(), SCIPcreateExprValue(), SCIPcreateExprVar(), SCIPcreateVarBasic(), SCIPinfinity(), SCIPreleaseExpr(), and SCIPsnprintf().
|
inline |
receive notification of a number in a nonlinear expression
value | value |
Definition at line 455 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, and SCIPcreateExprValue().
|
inline |
receive notification of a variable reference in a nonlinear expression
variableIndex | AMPL index of variable |
Definition at line 470 of file reader_nl.cpp.
receive notification of a unary expression
kind | expression operator |
child | argument |
Definition at line 482 of file reader_nl.cpp.
References assert(), i, NULL, SCIP_CALL_THROW, SCIPcreateExprAbs(), SCIPcreateExprCos(), SCIPcreateExprExp(), SCIPcreateExprLog(), SCIPcreateExprPow(), SCIPcreateExprSin(), SCIPcreateExprSum(), and SCIPreleaseExpr().
|
inline |
receive notification of a binary expression
kind | expression operand |
firstChild | first argument |
secondChild | second argument |
Definition at line 550 of file reader_nl.cpp.
References assert(), i, NULL, SCIP_CALL_THROW, SCIPcreateExprExp(), SCIPcreateExprLog(), SCIPcreateExprPow(), SCIPcreateExprProduct(), SCIPcreateExprSum(), SCIPgetValueExprValue(), SCIPisExprValue(), and SCIPreleaseExpr().
|
inline |
receive notification of the beginning of a summation
num_args | number of terms to expect |
Definition at line 663 of file reader_nl.cpp.
|
inline |
receive notification of the end of a summation
handler | handler that handled the sum |
Definition at line 672 of file reader_nl.cpp.
References i, NULL, SCIP_CALL_THROW, and SCIPcreateExprSum().
|
inline |
receive notification of an objective type and the nonlinear part of an objective expression
objectiveIndex | index of objective |
type | objective sense |
nonlinearExpression | nonlinear part of objective function |
Definition at line 684 of file reader_nl.cpp.
References assert(), i, NULL, SCIP_CALL_THROW, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIP_VARTYPE_CONTINUOUS, SCIPaddVar(), SCIPcreateVarBasic(), SCIPgetValueExprValue(), SCIPisExprValue(), SCIPreleaseVar(), and SCIPsetObjsense().
receive notification of an algebraic constraint expression
constraintIndex | index of constraint |
expr | nonlinear part of constraint |
Definition at line 714 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, and SCIPchgExprNonlinear().
|
inline |
receives notification of a logical constraint expression
Definition at line 726 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, SCIPaddCons(), SCIPcreateConsBasicNonlinear(), and SCIPreleaseCons().
|
inline |
receive notification of the beginning of a common expression (defined variable)
index | index of common expression |
num_linear_terms | number of terms to expect |
Definition at line 794 of file reader_nl.cpp.
receive notification of the end of a common expression
index | index of common expression |
expr | nonlinear part of common expression |
Definition at line 806 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, and SCIPappendExprSumExpr().
|
inline |
receive notification of a common expression (defined variable) reference
expr_index | index of common expression |
Definition at line 827 of file reader_nl.cpp.
|
inline |
receive notification of variable bounds
variableIndex | AMPL index of variable |
variableLB | variable lower bound |
variableUB | variable upper bound |
Definition at line 838 of file reader_nl.cpp.
References assert(), i, nvars, SCIP_CALL_THROW, SCIP_VARTYPE_BINARY, SCIPchgVarLbGlobal(), SCIPchgVarUbGlobal(), SCIPinfinity(), and SCIPvarGetType().
|
inline |
receive notification of constraint sides
index | AMPL index of constraint |
lb | constraint left-hand-side |
ub | constraint right-hand-side |
Definition at line 861 of file reader_nl.cpp.
References assert(), i, SCIP_CALL_THROW, SCIPchgLhsLinear(), SCIPchgLhsNonlinear(), SCIPchgRhsLinear(), SCIPchgRhsNonlinear(), and SCIPisInfinity().
|
inline |
receive notification of the initial value for a variable
var_index | AMPL index of variable |
value | initial primal value of variable |
Definition at line 896 of file reader_nl.cpp.
References i, NULL, SCIP_CALL_THROW, SCIPcreateSol(), and SCIPsetSolVal().
|
inline |
receives notification of the initial value for a dual variable
Definition at line 910 of file reader_nl.cpp.
|
inline |
receives notification of Jacobian column sizes
use ColumnSizeHandler from upper class, which does nothing
Definition at line 919 of file reader_nl.cpp.
References i.
|
inline |
receive notification of an integer suffix
name | suffix name, not null-terminated |
kind | suffix kind |
Definition at line 1117 of file reader_nl.cpp.
References i.
|
inline |
receive notification of a double suffix
name | suffix name, not null-terminated |
kind | suffix kind |
Definition at line 1128 of file reader_nl.cpp.
References i.
|
inline |
receive notification of the linear part of an objective
objectiveIndex | index of objective |
Definition at line 1199 of file reader_nl.cpp.
References i.
|
inline |
receive notification of the linear part of a constraint
constraintIndex | index of constraint |
Definition at line 1213 of file reader_nl.cpp.
|
inline |
receives notification of a Boolean value <mp::expr::BOOL>
Definition at line 1222 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, and SCIPcreateExprValue().
|
inline |
receives notification of a logical not <mp::expr::NOT>
Definition at line 1237 of file reader_nl.cpp.
References i, NULL, SCIP_CALL_THROW, SCIPcreateExprValue(), SCIPcreateExprVar(), SCIPgetNegatedVar(), and var.
|
inline |
receives notification of a binary logical expression <mp::expr::FIRST_BINARY_LOGICAL>
Definition at line 1263 of file reader_nl.cpp.
References assert(), i, NULL, SCIP_CALL_THROW, SCIP_VARTYPE_BINARY, SCIPaddCons(), SCIPaddVar(), SCIPcreateConsBasicAnd(), SCIPcreateConsBasicOr(), SCIPcreateConsBasicXor(), SCIPcreateExprValue(), SCIPcreateExprVar(), SCIPcreateVarBasic(), SCIPgetNegatedVar(), SCIPreleaseCons(), SCIPreleaseVar(), TRUE, and vars.
|
inline |
receives notification of a relational expression <mp::expr::FIRST_RELATIONAL>
we only handle equality or inequality between binary variables and boolean values here
Definition at line 1464 of file reader_nl.cpp.
References assert(), FALSE, i, NULL, SCIP_CALL_THROW, SCIP_VARTYPE_BINARY, SCIPaddCons(), SCIPaddVar(), SCIPcreateConsBasicXor(), SCIPcreateExprValue(), SCIPcreateExprVar(), SCIPcreateVarBasic(), SCIPgetNegatedVar(), SCIPreleaseCons(), SCIPreleaseVar(), TRUE, and vars.
|
inline |
receive notification of the end of the input
Definition at line 1557 of file reader_nl.cpp.
References assert(), cleanup(), i, NULL, SCIP_CALL_THROW, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddCons(), SCIPaddLinearVarNonlinear(), SCIPaddSolFree(), SCIPaddVar(), SCIPcreateConsBasicNonlinear(), SCIPcreateConsBasicSOS1(), SCIPcreateConsBasicSOS2(), SCIPcreateVarBasic(), SCIPgetObjsense(), SCIPinfinity(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPsnprintf(), and varidx.
|
inline |
releases expressions and linear constraints from data
should be called if there was an error while reading the .nl file this is not in the destructor, because we want to return SCIP_RETCODE
Definition at line 1664 of file reader_nl.cpp.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeSol(), and SCIPreleaseExpr().
Referenced by EndInput().