mmxnlp and the other Mosel modules
mmxnlp is designed to provide seamless integration with other Mosel functionalities. However, the fundamentally different nature of nonlinear problems makes some compromises necessary; these are listed in this section.
Overloaded functions
The following functionality is modified or extended by the mmxnlp module:
- Retrieval of solution values with getsol, both for variables and nonlinear constraints. A detailed description of the behaviour of this function can be found in the documentation for the mmxprs and mmnl modules.
- Functions implemented in the mmnl module are extended for nonlinear solvers:
- setinitval, clearinitvals and copysoltoinit to manage initial values.
- Mathematical functions: abs, exp, ln, log, sqrt, cos, sin, tan, arccos, arcsin, arctan.
- Mosel constraint and constraint visibility functions: gettype, settype, ishidden and sethidden.
- Functions implemented in the mmxprs module are extended for nonlinear solvers:
Module compatibility
The mmquad module is incompatible with the mmxnlp module, and should not be used together with it.
The mmxprs and mmnl modules are automatically loaded when using the mmxnlp module.
The mmnl module defines several discontinuous functions for use with decision variables (mpvar), which are not supported by the mmxnlp module. These constructions should instead be modelled with integer constraints. The functions are: round, ceil, floor, idiv and mod.
The following standard functionalities are not available for nonlinear problems:
- Functions for working with a basis: loadbasis, readbasis and savebasis.
- Logical constraints of the form logctr, and their operators: implies, indicator, or, xor and and.
- Functions for working with multiple MIP solutions, the solution pool and the solution enumerator: selectsol, XPRS_enumduplpol, XPRS_enummaxsol and XPRS_enumsols.
- Functions for cut management, including model cuts and delayed rows: addcut, addcuts, loadcuts, storecut, storecuts, delcuts, dropcuts, getcnlist and getcplist.
- Functions for determining irreducible infeasible sets, and for repairing infeasibility: getiis, getiissense, getiistype, isiisvalid, resetiis and repairinfeas and getinfeas.