Xpress Mosel is the premier algebraic modeling and programming language. Its best-in-class functionality enables operations researchers, and modeling experts to rapidly develop and deploy optimization solutions that solve complex, real-world business problems. It provides an easy-to-learn, robust way to interact with solver engines, and tightly integrates with Xpress Insight to deploy models into powerful, business user-friendly applications.
Xpress Mosel 6.4 builds out the programming features of the Mosel language.
At the same time, this new release also provides various extensions to Mosel's
optimization capabilities by giving access to new functionality of the Xpress
Solvers. Most importantly, the Xpress global optimization solver is accessible from Mosel. Also, Mosel no longer depends on the licensing library XPRL. Find a more detailed list of new features available below.
Updates to optimization capability
Mosel core programming features
New features of Mosel components
Visit the Xpress release notes to learn more.
Xpress Mosel 6.4 builds out the programming features of the Mosel language.
At the same time, this new release also provides various extensions to Mosel's
optimization capabilities by giving access to new functionality of the Xpress
Solvers. Most importantly, the Xpress global optimization solver is accessible from Mosel. Also, Mosel no longer depends on the licensing library XPRL. Find a more detailed list of new features available below.
Updates to optimization capability
- Mosel 6.4 supports the features of Xpress 9.2, in particular the global optimization solving capabilities for solving non-convex optimization problems to optimality. Theglobal solver is now used by default if licensed and if suitable for the problem type and any specific algorithmic functionality employed by a problem. If needed, a non-default solver selection can be made via the control XPRS_NLPSOLVER (switching between local and global NLP solving), in combination with XNLP_SOLVER for selecting a specific local solver. Multiple objectives solving functionality is now also available for objectives of type nlctr.
- The IIS (Irreducible Infeasible Set) functionality is now extended to work with indicator, general and non-linear constraints. The solver now returns a “Partial IIS”, that is, a (non-minimal) conflict set, if the search is not complete, for example when applying a time limit. New solver functionality is documented in the chapters ‘mmxprs’ and ‘mmxnlp’ of the ‘Mosel Language Reference Manual’. An example demonstrating the impact of NLP solver choice can be found here.
Mosel core programming features
- New compiler directives allow developers to state advanced version management rulesfor Mosel packages: Dynamic package loading relies on the version number stated by the version compiler directive, compilation records the minimum required version information of each required package (and module) in the BIM file. By default, the resulting BIM file only accepts to run with matching (same major release number, minor release number same or larger) package versions.
- the annotation mc.version.compatible states that a package can be used for running BIM files that have been compiled with some older package version (backwards compatibility);
- the minimum required version that is recorded when compiling a BIM file can be changed to an older version than the actual package version number via the annotation mc.version.atleast; the use of subroutines that have been marked with mc.version.since annotation will also influence the minimum version requirement for a package;
- subroutines can be marked as deprecated via mc.version.deprecated;
- see the section ‘Advanced package version management’ of the ‘Mosel Language Reference Manual’ for a more detailed description.
- Deprecation markup has also been added for the Native Interface for the implementation of DSO where version management was already supported (see the ‘Native Interface Reference Manual’ for details).
- Going along with the package version management features, Mosel now implements more flexible handling of records: Mosel compiler saves only the public part of records for dependency and the linker can handle partial definition of a record, as a result, newer package versions adding record fields will remain compatible with older versions. Furthermore, records can now be declared in requirements (possibly without any field), making it possible to declare and use entities of unknown type that are provided at runtime by other components of the Mosel program.
New features of Mosel components
- Mosel now defines the type int64 to represent 64-bit integer numbers. This type is provided by the open-source module ‘math’ (see https://github.com/fico-xpress/mosel) that is also included ready-to-use in binary form in the Mosel distribution. This type implements the most common algebraic operations and it can also be read/written through Mosel’s standard data handling functionality.
- Applying the delcell routine to dense arrays now results in resetting the individual cells to their default value. The module mmreflect has been completed with an implementation of delcell and exists for union-type arrays.
- Efficiency improvements: an improved implementation of the case of construct for certain situations leads to an average speed-up of 30-60%. Furthermore, a faster implementation of set difference and intersection operations achieves a noticeable speedup for certain large-scale examples.
- Update of external libraries:
- Upgrade of mmssl and xprmsrv to OpenSSL 3.0 and libssh 0.10.
- The update of the SQLite version to 3.42 in mmodbc results in some changes to type names used by the database! (’integer’ → ’INTEGER’).
Visit the Xpress release notes to learn more.
Updated 3 years ago
Version 3.0FICO
Community Manager
Joined July 21, 2025
FICO® Xpress Optimization Blog
Follow this blog board to get notified when there's new activity