Preface
`Getting Started' is a quick and easy-to-understand introduction to modeling and solving different types of optimization problems with FICO Xpress Optimization. It shows how Linear, Mixed-Integer, and Quadratic Programming problems are formulated with the Mosel language and solved by Xpress Optimizer. We work with these Mosel models by means of the graphical user interface Xpress Workbench. Two alternatives to using this high-level language are also discussed: a model may be defined in a programming language environment using the model builder library Xpress BCL or directly input into the Optimizer in the form of a matrix.
Throughout this book we employ variants of a single problem, namely optimal portfolio selection. To readers who are interested in other types of optimization problems we recommend the book `Applications of Optimization with Xpress-MP' (Dash Optimization, 2002), see also
http://examples.xpress.fico.com/example.pl#mosel_app
This book shows how to formulate and solve a large number of application problems with Xpress.
A short introduction such as the present book highlights certain features but necessarily remains incomplete. The interested reader is directed to various other documents available from the Xpress online documentation website, such as the user guides and reference manuals for the various pieces of software of the FICO Xpress Optimization suite (Xpress Solver, Mosel language, Mosel modules, etc.) and the collection of white papers on modeling topics. A list of the available documentation is given in the appendix.
Whom this book is intended for
This book is an ideal starting point for software evaluators as it gives an overview of the various Xpress products and shows how to get up to speed quickly through experimenting with the models discussed via a high-level language used in a graphical environment.
Starting from a simple linear model, every chapter adds new features to it. First time users are taken in small steps from the textual description, via the mathematical model to a complete application (Chapter 9) or the implementation of a solution heuristic that involves some more advanced optimization tasks (Chapter 8).
The variety of topics covered may also help occasional users to quickly refresh their knowledge of Mosel, Workbench, BCL and the Optimizer.
How to read this book
For a complete overview and introduction to modeling and solving with the FICO Xpress Optimization product suite, we recommend reading the entire document. However, readers who are only interested in certain topics, may well skip certain parts or chapters as shown in the following diagram.

Figure 1.1: Suggested flow through the book
Using the Mosel language with Xpress Workbench
The approach presented in the first part of this book is recommended for first time users, novices to Mathematical Programming, and users who wish to develop and deploy new models quickly, supported by graphical displays for problem and solution analysis.
For example, if you wish to develop a Linear Programming (LP) model and embed it into some existing application, you should read the first four chapters, followed by Chapter 9 on embedding Mosel models.
To find out how to model and solve Quadratic Programming (QP) problems with Xpress, you should read at least Chapters 1-3, the beginning of Chapter 4 and then Chapter 7; for Mixed Integer Quadratic Programming (MIQP) also include Chapter 6 on Mixed Integer Programming (MIP).
To see how you may implement your own solution algorithms and heuristics in the Mosel language, we suggest reading Chapters 1-3, the beginning of Chapter 4, followed by Chapter 6 on MIP and then Chapter 8 on Heuristics.
Working in a programming language environment
Users who wish to develop their entire application in a programming language environment have two options, using the model builder library BCL or inputting their problem directly into Xpress Optimizer.
Users who are looking for modeling support whilst model execution speed is a decisive factor in their choice of the tool should look at the model builder library BCL. Due to the modeling objects defined by BCL, the resulting code remains relatively close to the algebraic model and is easy to maintain. BCL supports modeling of LP, MIP, and QP problems (Chapters 10-12). Model input with BCL may be combined with direct calls to Xpress Optimizer to define solution algorithms as shown with the example in Chapter 13.
The direct access to the Optimizer (discussed in the last part) is provided mainly for low-level integration with applications that possess their own matrix generation routines (Chapters 15-17 for LP, MIP, and QP problems), or to solve matrices given in standard format (MPS or LP) that were generated externally (Chapter 14). The possibility to directly access very specific features of the Optimizer is also appreciated by advanced users, mostly in the domain of research, who implement their own algorithms involving the solution of LP, MIP, or QP problems.