Developing solution algorithms in Mosel:

Combining different solvers and techniques

 

 Alkis Vazacopoulos
 Dash Optimization


Mosel is a new environment for modeling and solving problems. It includes a language that is both a modeling and a programming language.  Since there is no separation between a modeling statement and a procedure that actually solves the problem, one can program a complex solution algorithm by interlacing modeling and solving statements; typical examples are branch-and-cut, column generation, recursion, and different types of heuristics.

 

Each category of problem uses with particular classes of variables and constraints, and a single kind of solver cannot be efficient in all cases. Mosel provides a dynamic interface to external solvers, allowing them to directly extend the vocabulary and capabilities of the language through plug-in modules. Modules for formulating and solving quadratic programming problems or problems with nonlinear constraints and objectives have already been implemented, and also combinations of constraint programming with mixed-integer programming (MIP).

 

The modeling and solving tasks are usually not the only operations performed by a software application, and this is why Mosel is provided in the form of both libraries and a standalone program. With the Xpress-IVE visual development environment the developer can edit and run Mosel models and analyze MIP problems by visualizing the problem matrix, the branch-and-bound search tree, and the results.