Xpress-Mosel allows you to formulate your problem, solve it with a suitable solver engine, and analyze the solution, using a fully-functional programming language specifically designed for the purpose. Mosel programs are compiled, which makes them fast and hides the intellectual property within them from end-users. They can be run interactively or embedded within an application.

Click here to download an overview article on Mosel.
Mosel language
The Mosel language is easy to learn and use, reducing the cost of developing optimization models from scratch, understanding and auditing models that other people have written, and modifying and maintaining models over time. The visual development environment IVE makes the process even easier.
Full support for arbitrary ranges, index sets, and sparse objects means even the largest and most sophisticated problem can be expressed clearly and concisely, and completely independently of a particular data instance.
Model development in the Mosel language is aided by the Mosel debugger that supports all typical debug functionality for tracing and analyzing the execution of a model.
Solver modules and data handling
Mosel is completely open and user extensible. The Mosel distribution includes extension libraries (so-called modules), one of which provides direct control of the Xpress-Optimizer, through optimization statements in the Mosel program. Other solver modules give access to Xpress-SLP for formulating and solving non-linear problems, and the Constraint Programming software Xpress-Kalis.
Mosel has database ( ODBC, Excel, Oracle ) connectivity, text file I/O and in-memory data exchange abilities. Furthermore, Mosel is extensible. There are several third party modules available which extend the language and a published interface for creating your own. Consultants will find the ability to create plug-in modules to interface to legacy systems or exotic data formats particularly appealing.
Click here to download the paper Generalized file handling.
Libraries for embedding
For its deployment a model usually needs to be embedded into the company information system. A model developed using the Mosel language may be executed and accessed from a programming language environment (e.g. C, Java, or C#) through the Mosel libraries. This flexible interface provides means, for instance, to exchange data and solution values between a model and a larger application.
In addition to Mosel's own functionality, certain modules also provide direct access to their functions from a programming language environment.
Click here to download the paper Embedding optimization algorithms
User-written libraries for Mosel
By implementing their own libraries for Mosel users can add new functionality to the Mosel language and make it evolve according to their needs. User-written libraries may take the form of packages or modules.
Packages are libraries written directly in the Mosel language with a similar structure as Mosel models. They are ideally suited to give access to model parts (e.g., reformulations) or algorithms written in Mosel that you wish to distribute without disclosing their contents, for the development of your personal Mosel 'tool box', or even to implement add-ons to Mosel modules.
Via Mosel's Native Interface users may define their own modules that are treated just like the software components of the Mosel distribution. Typical uses for modules include the implementation of problem-specific data handling, or connections to external solvers or solution algorithms.