Matrix Explorer – A Diagnostic Tool for Xpress-Mosel Models
Matrix Explorer is a package (add-on) for Xpress-Mosel
When finding bugs in a model, or in data, or simply trying to explain why a solution is the
way it is, you often need to explore the generated matrix and solution together.
To know the contribution of a variable to a constraint, you need to see both the activity of the
variable and the coefficient of the variable. For example, to understand why a production
resource is at 100% of capacity, you need to know about the operations which use the resource –
both how many tonnes they are planned to produce, and how fast they each run.
Although that information can be extracted via Mosel-IVE, it is time-consuming and cumbersome; to
assemble the information into a useful form requires paper and a calculator at the least.
But the requirement doesn't end there – now you can see which operation is consuming all the
capacity, you will want to see immediately where the product is being used, by following the material
balance constraint for that material. That might lead into another operation, or storage, or
shipment to a customer; you will want to follow the supply chain to its end – or its beginning.
And that's just Primal information. If you have equally convenient access to Dual information
then you can quickly answer questions about the effects that binding constraints have on the
activities of the variables. If an operation runs below maximum, despite unsatisfied demand for the
product, the Dual constraint for the variable will tell you whether it is capacity, or availability of
feed material, or maybe the ability to transport the product once made, that is the problem.
Matrix Explorer not only supports this functionality and more, and is easily mapped onto your specific
model, it is also entirely free. And the source code is freely available too, as an example of a
relatively sophisticated XAD implementation. The only restriction on its use is that you should
leave all copyright notices unaltered.
Here are some screenshots from the demonstration model included with the release. Find a
variable by identifying its dimensions in turn from the list boxes:
Once an individual variable is identified, its intersections are shown:
Follow one of the variable's intersecting constraints to see all its intersections:
Set options or read the help message:
You will need version 3.4 of Xpress-Mosel, including a licence for XAD, in order to use Matrix
The release consists of a zip file containing the package MatrixExplorer.bim file (which should be
placed in the dso folder under your Xpress installation folder), the original MatrixExplorer.mos source
file, and a simple example model MXDemo.mos. Click
here to download.