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.