implementation of AMPL/MPs NLHandler that constructs a SCIP problem while a .nl file is read
Definition at line 111 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 | |
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 | |
void | EndInput () |
SCIP_RETCODE | cleanup () |
Definition at line 1035 of file reader_nl.cpp.
Definition at line 1046 of file reader_nl.cpp.
Definition at line 1116 of file reader_nl.cpp.
Definition at line 1130 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 197 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 263 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 276 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 406 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 421 of file reader_nl.cpp.
receive notification of a unary expression
kind | expression operator |
child | argument |
Definition at line 433 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 501 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 614 of file reader_nl.cpp.
|
inline |
receive notification of the end of a summation
handler | handler that handled the sum |
Definition at line 623 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 635 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 665 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, and SCIPchgExprNonlinear().
|
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 730 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 742 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 763 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 774 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 797 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 832 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 846 of file reader_nl.cpp.
|
inline |
receives notification of Jacobian column sizes
use ColumnSizeHandler from upper class, which does nothing
Definition at line 855 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 1037 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 1048 of file reader_nl.cpp.
References i.
|
inline |
receive notification of the linear part of an objective
objectiveIndex | index of objective |
Definition at line 1119 of file reader_nl.cpp.
References i.
|
inline |
receive notification of the linear part of a constraint
constraintIndex | index of constraint |
Definition at line 1133 of file reader_nl.cpp.
|
inline |
receive notification of the end of the input
Definition at line 1146 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 1253 of file reader_nl.cpp.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeSol(), and SCIPreleaseExpr().
Referenced by EndInput().