Blog Post

FICO® Xpress Optimization Blog
8 MIN READ

FICO Xpress Mosel: A 20 Year Success Story

FICO's avatar
FICO
Community Manager
4 years ago
20 years ago, at INFORMSannual meeting in 2001, Yves Colombani, Bob Daniel, Susanne Heipcke, and James Tebboth, announced the release of an intrinsically new modeling and programming language geared towards efficiency and conciseness for mathematical optimization problems – Xpress Mosel. Since then, it has been heavily adopted in research and industry.

It all started with a company, Dash Associates. The co-founders of Dash, Bob Daniel, and Robert Ashford, started with a standalone solver along with a modeling tool, initially restricted to Linear Programming (1983), extended to Mixed Integer Programming shortly after (1985). In the 1990s the Xpress product suite was extended by a callable library version (XOSL-Xpress Optimizer Subroutine Library) and a free, size-limited student edition of Visual Xpress. Xpress Mosel with the editor IVE replaced the original standalone mathematical modeling tool in 2001. In 2008, Dash Optimization has been acquired by FICO, and since then expanded its offering with a deployment platform for decision support applications, Xpress Insight, and a cloud-ready IDE, Xpress Workbench.

In this blog Jens Schulz, Technical Product Manager, interviews our Operations Research expert, Susanne Heipcke, reflecting on the history and success of Mosel over the past 20 years.

Jens: Three years ago, I had the pleasure to become part of the amazing FICO Optimization team. Before, I’ve been addicted to using Xpress Mosel for a broad range of applications in chemical manufacturing. I have been amazed at how easy it was to get data from various sources, how efficient it was to write, read, and maintain the code. Now, I felt there must have been some nice anecdotes from the past worth sharing. History has it! Let me share what I learned from Susanne during our conversation about the early days of Xpress Mosel. 

Jens: Susanne, going back 20 years and more – what was the reason to develop Xpress Mosel? 

Susanne: Initial discussions started around 1996/97. Technology, in particular hardware, had evolved a lot since the first release of Xpress in the early 1980s. Mosel’s pre-cursor, mp-model, was designed for use on personal computers which in the 1980s only had very little memory such that a model formulation and a solver run couldn’t both be held in memory at the same time. Further, it was written in Fortran and assembly language, while the need to support multiple platforms made us move to C. The concept of library APIs had come up, leading to the idea of providing new features or connections to additional solvers via modules: since the mid-1990s the new area of Constraint Programming was increasingly gaining attention and Dash was about to launch the development of its nonlinear solver (Xpress SLP). Modularity and openness are inherent to the architectural design of Mosel.

Jens: In your opinion, what makes Xpress Mosel special?

Susanne: Well, mp-model had been designed by mathematicians for use by mathematicians. Its notation is close to the way we write the formulas in a mathematical textbook. Logical quantifiers such as ‘forall’ or operators such as ‘sum’ are straightforward to use. But even more, getting data into the model and exporting data had always been crucial to our users.  Connectors for spreadsheets and ODBC drivers have been available early on. All these features have been carried over to Mosel, in a generalized form. Then, the biggest game-changer Mosel brings is its efficiency in processing such statements for the formulation of optimization models while providing at the same time fully-fledged programming capabilities. This concept of an all-integrated modeling and programming language, where we are not separating between the two was entirely new, comparable software by competitors provided modeling capabilities with separate scripting-type commands. In Mosel, we don’t distinguish between the two.

Jens: How has Xpress Mosel been developed?

Susanne: In the 1990s and early 2000s Dash cooperated with various companies and universities in a series of EU-funded research projects, three of which formed a series building on each other: PAMIPS (Parallel Algorithms and Software for Mixed Integer Programming in Industrial Scheduling, 1994-1996)- early implementations of parallelism within the Xpress solvers running on inhomogeneous workstation clusters and high-performance multi-core architectures (my first direct contacts with Dash date from this time whilst being employed by BASF AG), MEMIPS (Model Enhanced Solution Methods for Integer Programming Software, 1997-1999)-parts of the design phase of Mosel coincided with this project although it was not a topic of this project, LISCOS (Large Scale Integrated Supply Chain Optimization Software, 2000 -2003, an EU project)- this project has accompanied the testing phase of the initial Mosel release and guided the development priorities for the next releases. Laurence Wolsey’s team from CORE at UCL (University of Louvain) and members of BASF AG, Germany, have participated in all three above-named projects jointly with Dash, they had been heavily contributing to the requirement specifications and design of Mosel.

An important aspect for both partners was the ability to easily implement and experiment with advanced algorithms (cutting plane algorithms for the team at CORE, decomposition techniques for large-scale industrial problems at BASF). Besides the other industrial partners (Procter and Gamble, PSA Peugeot Citroën, and Barbot), the second software partner (COSYTEC SA) and the team of Alexander Bockmayr at LORIA (University of Nancy) were among the early-stage users of Mosel relying on its open interfaces for their research on combined MIP-CP solving, implementing a prototype module connecting to the CHIP constraint solver, that is, from its beginnings Mosel has been used with different types of solvers.

Mosel has been designed with expert practitioners which made it get adopted so quickly and broadly. Working in such a large research project obviously brings its challenges, including many contradictory opinions; well, these are great for early feedback and helped to clearly define what should be in-scope and out-of-scope. There were also lots of funny and yet serious discussions: should variable names be of single letter or long expressive names? Imagine how much time can be spent on this.

Jens: What was your role back then?

Susanne: I did my master thesis and Ph.D. work as a member of the PAMIPS project working on scheduling problems originating from BASF, then continued in MEMIPS. During my thesis work at the University of Buckingham under the supervision of Bob Daniel I also spent a term at MITand several shorter visits to the University Aix-Marseille II. Midway through the project MEMIPS, when finishing my Ph.D. thesis, I switched from BASF to working for Dash, where one of my first tasks was the productization of what is now known as Xpress BCL, originally developed to support the implementation of my thesis work on combined MIP/CP solving.

At the same time, I shared in the design discussions for what was to become Mosel. I started to work in Dash’s Leamington Spa office in the UK. Yes, the town really is a Spa, and it was a great atmosphere to work in this town with its 19th-century architecture built around a large park area. In the Leamington office, the researchers of the solver and modeling teams were working next to each other.

Jens: How did the teams expand in those days? Was that more hiring, partnering, or research project-based?

Susanne: Many hires by Dash in the late 90s and early 2000s resulted from academic contacts or research projects. There was some collaboration with the local University of Warwick, another Ph.D. student of Bob Daniel from the University of Buckingham started working for Dash, two students from Spain who came to the UK through an exchange program ended up staying in Leamington for several years. In the context of European mobility projects for postdocs, such as ADONET (Algorithmic discrete optimization) several postdocs have worked for limited time periods at the Leamington office. Yves Colombani had come into contact with Bob Daniel because I was using his constraint solver for my thesis; prior to being offered a postdoc contract by Dash in 1998, he had already implemented two matrix generators to connect external modeling tools to the Xpress solvers via short-term contracts. In the following years, Oliver Bastert & Livio Bertacco started on similar postdoc contracts as well – they are all still part of the Xpress team. We are somewhat of a big family. In the early 2000s, some new staff for marketing and sales tasks also joined the Leamington office. 

Jens: Was there anything special about the Leamington office?

Susanne: Well, the two UK offices were at the respective homes of the founders, Bob Daniel and Robert Ashford. In the late 1990s, we were working in the basement of the main building in Leamington. Later, when the modeling team was no longer working from the UK, a separate building was added, and the solver team moved into the so-called ‘shed’. Back in those days, distributing software meant to package books, disks, and dongles and ship them to their destination – these tasks were handled by the office in Blisworth that also served as the administrative headquarter. Some of these dongles are still in use by Xpress customers nowadays. 

Jens: When did Dash go global? 

Susanne: Just a few months before the release of Mosel as a unique integrated type of modeling and programming language and the announcement at INFORMS Annual meeting 2001, we also opened our US office (based in New Jersey) with marketing, sales, and technical experts led by Alkis Vazacopoulos. Horia Tipi moved over from Europe, he developed the editor Xpress IVE that was distributed with the initial releases of Mosel and is still in use today by many Operations Research experts. Three other colleagues from the Dash Optimization US team are also still working for FICO. Since the 1990s Dash had also started to build up a network of distribution partners worldwide, many of which still are partnering with FICO today.

Jens: How did Mosel evolve over the past 20 years?

Susanne: Well, initial ideas carried us through several years (this includes internationalization, that is, the support of multiple language encodings, that was published only with Mosel 4 in 2016), but we also saw a lot of unexpected uses. While being designed in the first line for modeling-related tasks, we saw its adoption for large software projects by independent software vendors, as well as internally at FICO later, most notably for the (re)implementation of FICO Decision Optimizer. Over time this has led to the addition of many programming language type features and ultimately also to the decision to turn Mosel into free software in recognition of its use as a programming language (announced at INFORMS annual meeting 2017).

Distributed computing and parallelism also came up early. The ability to use remote machines across platforms had been key, be it 32 vs 64bit machines, or Solaris, Linux, or Windows. Network protocols are very different across platforms, yet, when using this functionality through Mosel all of this is not a concern to Operations Researchers:  Mosel users simply invoke the command ‘connect’, and it works. 

Jens: Where do you see the future of Mosel is heading towards? 

Susanne: We are in the process of preparing the next major release (Mosel 6) for spring 2022. This will again be an advance in terms of programming functionality, building on concepts introduced in the current Mosel 5 series. Longer-term plans are largely driven by user and project needs, obviously including support for new solver features within the Xpress suite, and the general wish to make the developers’ lives easier. Software implementation needs to cope with continuously growing problem (and data) sizes, and we will certainly leverage our advantages of modularity for the design of software project architectures adapted to large-scale projects. Another trend is the development of high-level packages or components for specific tasks that are often made available open-source (such as ‘jobqueue’, see Mosel open source repository on Git).

Jens: Thanks Susanne for the insights and all your commitment and engagement with the optimization community at FICO, INFORMS, EURO, GOR – where you spread the word about Operations Research in practice.  

To access training material on Modeling and problem solving with Xpress Mosel, follow this link.

Learning videos about Xpress Mosel are available here.

If you are interested in learning more from Susanne make sure to check out her most recent series on new modeling constructs in Mosel that allow for an easier formulation of MIP models.

In case you haven’t already, make sure to subscribe to our Optimization Blog to be notified of more content on this topic.
Updated 4 years ago
Version 3.0
No CommentsBe the first to comment