Detailed Description
implementation of AMPL/MPs NLHandler that constructs a SCIP problem while a .nl file is read
Definition at line 144 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 () override | |
| void | OnHeader (const mp::NLHeader &h) |
| SCIP_EXPR * | OnNumber (double value) |
| receive notification of a number in a nonlinear expression More... | |
| SCIP_EXPR * | OnVariableRef (int variableIndex) |
| receive notification of a variable reference in a nonlinear expression More... | |
| SCIP_EXPR * | OnUnary (mp::expr::Kind kind, SCIP_EXPR *child) |
| receive notification of a unary expression More... | |
| SCIP_EXPR * | OnBinary (mp::expr::Kind kind, SCIP_EXPR *firstChild, SCIP_EXPR *secondChild) |
| receive notification of a binary expression More... | |
| NumericArgHandler | BeginSum (int num_args) |
| receive notification of the beginning of a summation More... | |
| SCIP_EXPR * | EndSum (NumericArgHandler handler) |
| receive notification of the end of a summation More... | |
| 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 More... | |
| void | OnAlgebraicCon (int constraintIndex, SCIP_EXPR *expr) |
| receive notification of an algebraic constraint expression More... | |
| void | OnLogicalCon (int index, LogicalExpr expr) |
| receives notification of a logical constraint expression More... | |
| LinearExprHandler | BeginCommonExpr (int index, int num_linear_terms) |
| receive notification of the beginning of a common expression (defined variable) More... | |
| void | EndCommonExpr (int index, SCIP_EXPR *expr, int) |
| receive notification of the end of a common expression More... | |
| SCIP_EXPR * | OnCommonExprRef (int expr_index) |
| receive notification of a common expression (defined variable) reference More... | |
| void | OnVarBounds (int variableIndex, double variableLB, double variableUB) |
| receive notification of variable bounds More... | |
| void | OnConBounds (int index, double lb, double ub) |
| receive notification of constraint sides More... | |
| void | OnInitialValue (int var_index, double value) |
| receive notification of the initial value for a variable More... | |
| void | OnInitialDualValue (int, double) |
| receives notification of the initial value for a dual variable More... | |
| ColumnSizeHandler | OnColumnSizes () |
| receives notification of Jacobian column sizes More... | |
| IntSuffixHandler | OnIntSuffix (fmt::StringRef name, mp::suf::Kind kind, int) |
| receive notification of an integer suffix More... | |
| DblSuffixHandler | OnDblSuffix (fmt::StringRef name, mp::suf::Kind kind, int) |
| receive notification of a double suffix More... | |
| LinearPartHandler | OnLinearObjExpr (int objectiveIndex, int) |
| receive notification of the linear part of an objective More... | |
| LinearConHandler | OnLinearConExpr (int constraintIndex, int) |
| receive notification of the linear part of a constraint More... | |
| LogicalExpr | OnBool (bool value) |
receives notification of a Boolean value <mp::expr::BOOL> More... | |
| LogicalExpr | OnNot (LogicalExpr arg) |
receives notification of a logical not <mp::expr::NOT> More... | |
| LogicalExpr | OnBinaryLogical (mp::expr::Kind kind, LogicalExpr lhs, LogicalExpr rhs) |
receives notification of a binary logical expression <mp::expr::FIRST_BINARY_LOGICAL> More... | |
| LogicalExpr | OnRelational (mp::expr::Kind kind, NumericExpr lhs, NumericExpr rhs) |
| void | EndInput () |
| SCIP_RETCODE | cleanup () |
Member Typedef Documentation
◆ IntSuffixHandler
| typedef SuffixHandler<int> AMPLProblemHandler::IntSuffixHandler |
Definition at line 1157 of file reader_nl.cpp.
◆ DblSuffixHandler
Definition at line 1168 of file reader_nl.cpp.
◆ LinearObjHandler
Definition at line 1238 of file reader_nl.cpp.
◆ LinearConHandler
Definition at line 1252 of file reader_nl.cpp.
Constructor & Destructor Documentation
◆ AMPLProblemHandler() [1/2]
|
inline |
constructor
initializes SCIP problem and problem data
- Parameters
-
scip_ SCIP data structure filename name of .nl file that is read
Definition at line 275 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, SCIPallocBlockMemoryArray, SCIPallocClearMemory, and SCIPcreateProb().
◆ AMPLProblemHandler() [2/2]
|
delete |
◆ ~AMPLProblemHandler()
|
inlineoverride |
destructor
only asserts that cleanup() has been called, as we cannot throw an exception or return a SCIP_RETCODE here
Definition at line 342 of file reader_nl.cpp.
Member Function Documentation
◆ operator=()
|
delete |
◆ OnHeader()
|
inline |
process header of .nl files
create and add variables, allocate constraints
- Parameters
-
h header data
Definition at line 355 of file reader_nl.cpp.
References BMScopyMemoryArray, h, 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().
◆ OnNumber()
|
inline |
receive notification of a number in a nonlinear expression
- Parameters
-
value value
Definition at line 485 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, and SCIPcreateExprValue().
◆ OnVariableRef()
|
inline |
receive notification of a variable reference in a nonlinear expression
- Parameters
-
variableIndex AMPL index of variable
Definition at line 500 of file reader_nl.cpp.
References NULL.
◆ OnUnary()
receive notification of a unary expression
- Parameters
-
kind expression operator child argument
Definition at line 512 of file reader_nl.cpp.
References ABS, NULL, SCIP_CALL_THROW, SCIP_Real, SCIPcreateExprAbs(), SCIPcreateExprCos(), SCIPcreateExprExp(), SCIPcreateExprLog(), SCIPcreateExprPow(), SCIPcreateExprSin(), SCIPcreateExprSum(), and SCIPreleaseExpr().
◆ OnBinary()
|
inline |
receive notification of a binary expression
- Parameters
-
kind expression operand firstChild first argument secondChild second argument
Definition at line 580 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, SCIP_Real, SCIPcreateExprExp(), SCIPcreateExprLog(), SCIPcreateExprPow(), SCIPcreateExprProduct(), SCIPcreateExprSum(), SCIPgetValueExprValue(), SCIPisExprValue(), and SCIPreleaseExpr().
◆ BeginSum()
|
inline |
receive notification of the beginning of a summation
- Parameters
-
num_args number of terms to expect
Definition at line 693 of file reader_nl.cpp.
References h.
◆ EndSum()
|
inline |
receive notification of the end of a summation
- Parameters
-
handler handler that handled the sum
Definition at line 702 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, SCIPcreateExprSum(), and AMPLProblemHandler::NumericArgHandler::v.
◆ OnObj()
|
inline |
receive notification of an objective type and the nonlinear part of an objective expression
- Parameters
-
objectiveIndex index of objective type objective sense nonlinearExpression nonlinear part of objective function
Definition at line 714 of file reader_nl.cpp.
References MAX, NULL, SCIP_CALL_THROW, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddVar(), SCIPcreateVarBasic(), SCIPgetValueExprValue(), SCIPisExprValue(), SCIPreleaseVar(), and SCIPsetObjsense().
◆ OnAlgebraicCon()
|
inline |
receive notification of an algebraic constraint expression
- Parameters
-
constraintIndex index of constraint expr nonlinear part of constraint
Definition at line 744 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, and SCIPchgExprNonlinear().
◆ OnLogicalCon()
|
inline |
receives notification of a logical constraint expression
Definition at line 756 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, SCIPaddCons(), SCIPcreateConsBasicNonlinear(), and SCIPreleaseCons().
◆ BeginCommonExpr()
|
inline |
receive notification of the beginning of a common expression (defined variable)
- Parameters
-
index index of common expression num_linear_terms number of terms to expect
Definition at line 824 of file reader_nl.cpp.
◆ EndCommonExpr()
|
inline |
receive notification of the end of a common expression
- Parameters
-
index index of common expression expr nonlinear part of common expression
Definition at line 836 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, and SCIPappendExprSumExpr().
◆ OnCommonExprRef()
|
inline |
receive notification of a common expression (defined variable) reference
- Parameters
-
expr_index index of common expression
Definition at line 857 of file reader_nl.cpp.
References NULL.
◆ OnVarBounds()
|
inline |
receive notification of variable bounds
- Parameters
-
variableIndex AMPL index of variable variableLB variable lower bound variableUB variable upper bound
Definition at line 868 of file reader_nl.cpp.
References SCIP_Bool, SCIP_CALL_THROW, SCIP_VARTYPE_BINARY, SCIPchgVarLbGlobal(), SCIPchgVarUbGlobal(), SCIPinfinity(), and SCIPvarGetType().
◆ OnConBounds()
|
inline |
receive notification of constraint sides
- Parameters
-
index AMPL index of constraint lb constraint left-hand-side ub constraint right-hand-side
Definition at line 892 of file reader_nl.cpp.
References SCIP_CALL_THROW, SCIPchgLhsLinear(), SCIPchgLhsNonlinear(), SCIPchgRhsLinear(), SCIPchgRhsNonlinear(), and SCIPisInfinity().
◆ OnInitialValue()
|
inline |
receive notification of the initial value for a variable
- Parameters
-
var_index AMPL index of variable value initial primal value of variable
Definition at line 938 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, SCIPcreateSol(), and SCIPsetSolVal().
◆ OnInitialDualValue()
|
inline |
receives notification of the initial value for a dual variable
Definition at line 952 of file reader_nl.cpp.
◆ OnColumnSizes()
|
inline |
receives notification of Jacobian column sizes
use ColumnSizeHandler from upper class, which does nothing
Definition at line 961 of file reader_nl.cpp.
◆ OnIntSuffix()
|
inline |
receive notification of an integer suffix
- Parameters
-
name suffix name, not null-terminated kind suffix kind
Definition at line 1159 of file reader_nl.cpp.
◆ OnDblSuffix()
|
inline |
receive notification of a double suffix
- Parameters
-
name suffix name, not null-terminated kind suffix kind
Definition at line 1170 of file reader_nl.cpp.
◆ OnLinearObjExpr()
|
inline |
receive notification of the linear part of an objective
- Parameters
-
objectiveIndex index of objective
Definition at line 1241 of file reader_nl.cpp.
◆ OnLinearConExpr()
|
inline |
receive notification of the linear part of a constraint
- Parameters
-
constraintIndex index of constraint
Definition at line 1255 of file reader_nl.cpp.
◆ OnBool()
|
inline |
receives notification of a Boolean value <mp::expr::BOOL>
Definition at line 1264 of file reader_nl.cpp.
References NULL, SCIP_CALL_THROW, and SCIPcreateExprValue().
◆ OnNot()
|
inline |
receives notification of a logical not <mp::expr::NOT>
Definition at line 1279 of file reader_nl.cpp.
References NULL, SCIP_Bool, SCIP_CALL_THROW, SCIPcreateExprValue(), SCIPcreateExprVar(), and SCIPgetNegatedVar().
◆ OnBinaryLogical()
|
inline |
receives notification of a binary logical expression <mp::expr::FIRST_BINARY_LOGICAL>
Definition at line 1305 of file reader_nl.cpp.
References NULL, SCIP_Bool, SCIP_CALL_THROW, SCIP_VARTYPE_BINARY, SCIPaddCons(), SCIPaddVar(), SCIPcreateConsBasicAnd(), SCIPcreateConsBasicOr(), SCIPcreateConsBasicXor(), SCIPcreateExprValue(), SCIPcreateExprVar(), SCIPcreateVarBasic(), SCIPgetNegatedVar(), SCIPreleaseCons(), SCIPreleaseVar(), and TRUE.
◆ OnRelational()
|
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 1506 of file reader_nl.cpp.
References FALSE, NULL, SCIP_Bool, SCIP_CALL_THROW, SCIP_VARTYPE_BINARY, SCIPaddCons(), SCIPaddVar(), SCIPcreateConsBasicXor(), SCIPcreateExprValue(), SCIPcreateExprVar(), SCIPcreateVarBasic(), SCIPgetNegatedVar(), SCIPreleaseCons(), SCIPreleaseVar(), and TRUE.
◆ EndInput()
|
inline |
receive notification of the end of the input
- setup all nonlinear constraints and add them to SCIP
- add linear constraints to SCIP (should be after nonlinear ones to respect order in .nl file)
- add initial solution, if initial values were given
Definition at line 1599 of file reader_nl.cpp.
References cleanup(), NULL, SCIP_Bool, SCIP_CALL_THROW, SCIP_INVALID, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddCons(), SCIPaddLinearVarNonlinear(), SCIPaddSolFree(), SCIPaddVar(), SCIPcreateConsBasicNonlinear(), SCIPcreateConsBasicSOS1(), SCIPcreateConsBasicSOS2(), SCIPcreateVarBasic(), SCIPevalExpr(), SCIPexprGetEvalValue(), SCIPgetObjsense(), SCIPinfinity(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPsetSolVal(), SCIPsnprintf(), and SCIPwarningMessage().
◆ cleanup()
|
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 1720 of file reader_nl.cpp.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeSol(), and SCIPreleaseExpr().
Referenced by EndInput(), and SCIP_DECL_READERREAD().