Spreadsheets
have become as ubiquitous as PCs. Given the way in which they are used
to calculate derived quantities from the values in other cells, it was
inevitable that they should be extended so that the values in cells
could float so as to enable the value in the target cell to be
maximised. In this way the spreadsheet itself has become another format
for expressing an MP matrix. Leading spreadsheets such as Excel and
Lotus 1-2-3 incorporate optimization add-ins which find the optimum
solution to problems, albeit with relatively few decision variables
(typically fewer than 100; more with the priced versions of the
add-ins).

If
one can do MP in a spreadsheet, isn't that the ideal solution? Well,
not really. Spreadsheets are notorious for their habit of hiding errors
in formulae. As they become larger they become less manageable. For all
but the smallest problems, the "total cost of ownership" of tackling an
MP problem is reduced by using a special-purpose MP package to extract
the data from a spreadsheet, set up the matrix, optimise it and return
the results to the spreadsheet for use there. The savings come in more
efficient use of the practitioner's time in setting up and maintaining
the model. From the user's point of view, he is still just using a
spreadsheet and pressing a macro button to find the best solution. In
fact, because dedicated MP software is used, the results are usually
obtained faster than with the native optimization add-in.

Conventional Programming Languages

Few
people now use conventional programming languages to write matrix
generator programs. They are less efficient in practitioner's time than
using dedicated MP software and so are unattractive during the
consultancy and development phase of an MP project. They have the
advantages of total flexibility, raw speed and a lack of royalties to
be paid. This means that they may be used in some implementations,
particularly for the most complex applications and where an application
package is being produced which is to be distributed widely. They may
also be met in maintenance, where a fine judgement is required as to
whether to modify the existing programs or start again using dedicated
MP software.

Matrix Generator Languages

Matrix
generator languages were developed in the 1960s as an alternative to
Fortran for writing matrix generator programs. They are marginally
better for this but force the user into thinking of his problem in
terms of blocks of columns and their entries in rows. They have become
very well established in refinery modelling but are unlikely to appeal
to new users when compared with more modern algebraic MP languages. The
main packages were OMNI from Haverly Systems and GAMMA from Bonner and
Moore.

Algebraic MP Languages

Algebraic
MP languages mimic the way in which one naturally writes an MP
formulation as algebraic relationships between decision variables. As
such they are the tool of the OR practitioner and are ideal during
consultancy and prototyping. They differ in the details of their
language, their interfaces to data sources and their facilities.
Leading packages include AMPL, GAMS, MPL and XPRESS Mosel.