FICO Xpress OptimizationR

Last update 17 October, 2019

QUICK REFERENCE

Guide for evaluators©2006–2020 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation ("FICO").
Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow
others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software describedin this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO afﬁliate).
Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use ispermitted.
The information in this documentation is subject to change without notice. If you ﬁnd any problems in this documentation, please
report them to us in writing. Neither FICO nor its afﬁliates warrant that this documentation is error-free, nor are there any otherwarranties with respect to the documentation except as may be provided in the license agreement. FICO and its afﬁliates speciﬁcallydisclaim any warranties, express or implied, including, but not limited to, non-infringement, merchantability and ﬁtness for a particularpurpose. Portions of this documentation and the software described in it may contain copyright of various authors and may belicensed under certain third-party licenses identiﬁed in the software, documentation, or both.
In no event shall FICO or its afﬁliates be liable to any person for direct, indirect, special, incidental, or consequential damages, including
lost proﬁts, arising out of the use of this documentation or the software described in it, even if FICO or its afﬁliates have been advisedof the possibility of such damage. FICO and its afﬁliates have no obligation to provide maintenance, support, updates, enhancements,
or modiﬁcations except as required to licensed users under a license agreement.
FICO is a registered trademark of Fair Isaac Corporation in the United States and may be a registered trademark of Fair Isaac
Corporation in other countries. Other product and company names herein may be trademarks of their respective owners.
FICO R Xpress Optimization
Last Revised: 17 October, 2019

How to Contact the Xpress TeamSales and MaintenanceIf you need information on other Xpress Optimization products, or you need to discuss maintenance contracts or other sales-related
items, contact FICO by: Phone: +1 (408) 535-1500 or +44 207 940 8718
 Web: www.ﬁco.com/optimization and use the available contact forms

Product Support
Customer Self Service Portal (online support): www.ﬁco.com/en/product-support
Email: Support@ﬁco.com (Please include ’Xpress’ in the subject line)
For the latest news and Xpress software and documentation updates, please visit the Xpress website at
http://www.ﬁco.com/xpress or subscribe to our mailing list.

Evaluator guide

FICO Xpress Optimization
R

Guide for evaluators
17 October, 2019

Introduction
Welcome to FICO R Xpress Optimization! This guide provides a framework for evaluating Xpress. Using
this guide you will be able to:
1. Verify that the Xpress installation was successful.
2. Decide which Xpress products to evaluate.
3. Evaluate Xpress.

1

Verify that the Xpress installation was successful
You can test that the Xpress installation was successful by launching Xpress Workbench (Windows
operating system only) or by running console commands (all operating systems).
1. Launch Xpress Workbench: Xpress Workbench is the development environment for Windows. To
run Xpress Workbench, double click on the Xpress Workbench icon on your desktop:
or selectStart  Programs  FICO  Xpress  Xpress Workbench. You may also start up Xpress
Workbench by typing xpworkbench at the command prompt or by double clicking onto an
Xpress Mosel model ﬁle (ﬁle with extension .mos).
2. Run console commands: At the command prompt1 , type the following sequence of commands:
optimizer (Enter)quit

You will see output that looks like the following:C:\> optimizer
FICO Xpress Solver 64bit v8.7.0 Sep 11 2019(c) Copyright Fair Isaac Corporation 1983-2019. All rights reserved
Optimizer v34.01.05[C:\xpressmp\bin\xprs.dll]
Enter problem name >[xpress C:\] quit
1 To obtain a command prompt under Windows select Start  Programs  Accessories  Command Prompt

Decide which Xpress products to evaluate

Fair Isaac Corporation Conﬁdential and Proprietary Information1

Evaluator guide2

Decide which Xpress products to evaluate
In order to make this decision you must consider the type of problem that you wish to solve, the toolsthat you wish to use for model development, the tools that you wish to use for model deployment, andthe platform you intend to use.

2.1

Type of problem
Xpress has solver engines for different types of problems:
Type of problem

Solving engine

Linear Programming (LP)

Xpress Optimizer

Mixed Integer Programming (MIP)
Quadratic Programming (QP)
Mixed Integer Quadratic Programming (MIQP)
Quadratically Constrained Quadratic Programming (QCQP)
Non-Linear Programming (NLP)

Xpress NonLinear

Mixed Integer Non-Linear Programming (MINLP)
Constraint Programming (CP)Xpress Kalis

Further information
See Xpress documentation (in the docs subdirectory of your Xpress installation or at
http://www.ﬁco.com/ﬁco-xpress-optimization/docs/latest):





2.2

Classiﬁcation of mathematical programming problems: “Getting Started with Xpress”, 1.1.
‘Mathematical Programming’.
Modeling with Mosel, in particular LP/MIP: “Xpress Mosel User Guide”.
Formulation of mathematical programming problems: see the book: “Applications of
Optimization with Xpress-MP”, Part I: ‘Developing Linear and Integer Programming models’.

Non-linear Programming: “Xpress NonLinear Manual”.

Constraint Programming: “Xpress Kalis User Guide”.

Tools for model development and speciﬁcation
Xpress provides the following tools for model development and speciﬁcation:

Xpress Mosel/Xpress Workbench: Mosel is an advanced modeling and programming language.
Xpress Workbench is the visual environment to develop Mosel models and Insight apps.
Xpress BCL: Object-oriented library callable from supported programming languages.
Xpress Optimizer libraries: Optimizer functions and procedures provided for low-level integration
with applications developed in supported programming languages.

Also, a model may be speciﬁed by a matrix in MPS or LP format.

Decide which Xpress products to evaluate

Fair Isaac Corporation Conﬁdential and Proprietary Information2

Evaluator guide

2.3

Tools for model deployment
Model deployment strongly depends on the tool used to specify the model. Deployment is achieved
through the use of Xpress libraries. Alternative deployment options for Mosel models are distributed or
Cloud computing applications controled via XPRD (see the Advanced Evaluators Guide for further
detail) and the embedding into distributed, multi-user applications using Xpress Insight.
Model speciﬁed in

Deployed using

Mosel

Xpress InsightMosel libraries (C++/C, Java, VBA, .NET)
XPRD (C++/C, Java)BCLBCL libraries (C, C++, Java, .NET)

Optimizer libraries

Optimizer libraries (C++/C, Java, .NET, Python)

Note that for Constraint Programming (Xpress Kalis), the model must be speciﬁed using Xpress Mosel.
Further information
See Xpress documentation (in the docs subdirectory of your Xpress installation or at
http://www.ﬁco.com/ﬁco-xpress-optimization/docs/latest):

2.4

Introductory examples (Mosel/BCL/Optimizer): “Getting Started with Xpress”.

Mosel libraries examples: “Xpress Mosel User Guide”, Part III: ‘Working with the Mosel Libraries’.

Mosel libraries documentation: “Mosel Library Reference Manual”.

BCL: “BCL Reference Manual”.

Optimizer: “Optimizer Reference Manual”.

Platform
Xpress Workbench is available on Microsoft Windows platforms, on Mac OSX, and on the FICO Analytic
Cloud. Xpress Kalis is available on Microsoft Windows and Linux. All other products are available on
every supported platform.

Decide which Xpress products to evaluate

Fair Isaac Corporation Conﬁdential and Proprietary Information

3

Evaluator guide3

Evaluate Xpress
The following ﬁve typical evaluator scenarios are deﬁned depending on the choice of products toevaluate (see question 2):
Scenario 1: Develop the model in Mosel for any kind of problem and deploy in any programming
language or as an Xpress Insight application.
Tool for model development:

Mosel

Type of problem:

Any

Tool for model deployment:(a) Xpress Insight(b) Mosel Libraries (C++/C, Java, VBA, .NET)









Scenario 2: Develop the model in BCL for problems requiring Xpress Optimizer and deploy in any
programming language.
Tool for model development:

BCL

Type of problem:

LP, MIP, QP, MIQP

Tool for model deployment:

BCL Libraries (C, C++, Java, .NET)

Scenario 3: Use your custom application to develop the model and then call the Xpress Optimizer
libraries. Available for problems that can be solved with Xpress Optimizer.
Tool for model development:

Custom application that calls optimizer libraries.

Type of problem:

LP, MIP, QP, MIQP

Tool for model deployment:

Optimizer libraries (C++/C, Java, .NET, Python)

Scenario 4: Run a matrix that is readily available in LP or MPS format. Such a model may be
executed through Xpress Workbench, console commands, or applications that call Xpress
Optimizer library functions.
Scenario 5: Use Xpress Insight to view the app demos and examples provided with the Xpress
installation.

Each scenario deﬁnes a sequence of speciﬁc evaluation steps.

3.1

Evaluation steps for Scenario 1
Tool for model development:

Mosel

Type of problem:

Any

Tool for model deployment:(a) Xpress Insight(b) Mosel Libraries (C++/C, Java, VBA, .NET)

This scenario uses examples from the “Getting Started with Xpress” document that can be found in
directory xpressmp\examples\getting_started\Mosel (where xpressmp is the installation
directory of Xpress).

Evaluate Xpress

Fair Isaac Corporation Conﬁdential and Proprietary Information

4

Evaluator guide

3.1.1

Launch Xpress Workbench

Xpress Workbench is the visual development environment for Windows. To run Xpress Workbench,on your desktop, or select Start  Programs  FICO 
double click on the Xpress Workbench icon
Xpress  Xpress Workbench. Otherwise, you may also start up Workbench by typing xpworkbench ina DOS window or by double clicking on a model ﬁle (ﬁle with extension .mos).
3.1.2

Open Mosel model in Xpress Workbench

Locate the directory containing the evaluation examples in your Xpress installation(xpressmp\examples\getting_started\Mosel) and open the ﬁle foliolp.mos by double
clicking on its name in the ﬁle browser. Alternatively, if you have already started Xpress Workbench
select Open a ﬁle in the Xpress Workbench entry screen and browse to select the ﬁle foliolp.mos.
The model “Portfolio optimization with LP” will open in the central pane (the Workbench editor). Thismodel seeks an optimal investment portfolio using ten securities (shares), subject to some risk andregional constraints. The comments in the code (text following the exclamation mark ‘!’) describe themeaning of the different statements. Note that RET is an array of real values representing the expected
return of the shares. The decision variables in the model are given by the array frac of type mpvar.
The procedure maximize calls Xpress Optimizer to maximize the objective function. The code also
contains statements to print the optimal solution and solution values.

Figure 1: Workbench window after a model run

Further information

Evaluate Xpress

For more information on the model formulation for this example see: “Getting Started with
Xpress”, Chapter 2: ‘Building models’.
For more information on the Mosel representation of the model for this example see: “Getting
Started with Xpress”, 3.2 ‘LP model’.

Fair Isaac Corporation Conﬁdential and Proprietary Information

5

Evaluator guide





3.1.3

For more information on Mosel and other Mosel examples see “Xpress Mosel User Guide”,
Chapter 1: ‘Getting started with Mosel’, 1.1 ‘Entering a model’.
New users of Mosel may also wish to take a look at the Appendix ‘Good modeling practice with
Mosel’ of the “Xpress Mosel User Guide”.
Compile and run the Mosel model

To execute a Mosel model select menu Run or click on the green ’Run’ icon
next to the dropdown
ﬁle selection box at the top (make sure the desired ﬁlename displays in the box). The output log and thestatus of the model execution are shown at the bottom of the Xpress Workbench screen (see Figure 1),
and it should read Mosel exited with code 0 and Process exited with code: 0 at the end of the display. If
Mosel detects any errors during compilation or model execution these will equally be reported in thislogging window.
While developing a model you may wish to just compile a model without running it with a data instance,
e.g. to check for syntax errors. Select menu entry Run  Build to compile the selected model. Upon
successful compilation you will see the message Created foliolp.bim in the logging window at thebottom and the compiled ﬁle appears in the workspace ﬁle listing, otherwise the log reports any errorsthat have occurred.
to run the model once more and open the Debugger pane at the right.
Now select the Debug icon
The model execution will be suspended just before its termination, allowing you to inspect the values ofthe model objects that have been populated by the model execution (see Figure 3). In debug mode you
can also set breakpoints or execute the Mosel model step-by-step to analyse its behaviour.

Figure 2: Workbench window with debugger display

Further information

Evaluate Xpress

For more on compilation and compilation errors see: “Getting Started with Xpress”, 3.3.
‘Correcting errors and debugging a model’.

Fair Isaac Corporation Conﬁdential and Proprietary Information

6

Evaluator guideFor more on Xpress Workbench see the “Xpress Workbench User Guide”.

String indices: The model data and solution are more easily understandable when using string indices.
Open and run model foliolps.mos. Explore the model output and the entities in the debugger display.
Further information




3.1.4

For more information on running the Mosel model for this example see: “Getting Started with
Xpress”, 3.4. ‘Solving and viewing the solution’.
For more information on string indices for this example see: “Getting Started with Xpress”, 3.4.1.
‘String indices’, and also “Xpress Mosel User Guide”, 2.1.3. ‘The burglar problem revisited’.
Work with data in Mosel

In Mosel models you may work with a large variety of data sources, ranging from simple text ﬁles andother ﬁle formats such as databases to data exchanged in memory between a Mosel model and a hostapplication or between several concurrent Mosel models. We show here the most frequent cases,
namely text ﬁles, spreadsheets, and database access via ODBC.
Text ﬁles
Open and run model foliodata.mos. Note that this model has a parameters block and an
initializations from block. The parameters include the data input ﬁle, output ﬁle, and othermodel constants. Parameters can be reset at run time, and they are particularly important when amodel is deployed within a business application. The initializations from block reads data fromthe ﬁle folio.dat. This ﬁle has a Mosel-speciﬁc format that can be seen by opening it in Xpress
Workbench by selecting menu File  Open... or double click on the ﬁlename in the directory contents
listing to the left of the main editor window. The index sets and data arrays in the model are createddynamically based on the data in the input ﬁle. Finally this model directs the solution output to an
external free-format ﬁle result.dat by calling the procedures fopen and fclose.
Further information
For more information on working with data and using parameters in Mosel see: “Getting Started with
Xpress”, Chapter 4: ‘Working with data’.
Spreadsheets and databases
Open and run model folioexcel.mos. The initializations from block in this program reads
data from an MS Excel spreadsheet. The model is accompanied by data in the ﬁle folio.xls. Notethat this example changes the sets RISK and NA into arrays of Booleans to receive the data from theﬁle. The initializations to block outputs the problem results back to the spreadsheet. If the
Excel ﬁle is open when writing to it the output data does not get saved, letting you choose whether tokeep the results or not. Repeated model executions will overwrite previous output in the target range.
A second very similar model, folioodbc.mos, reads data from an ODBC data source (e.g., the MS
Access database folio.mdb) and outputs the problem results back to the database. The preﬁx to theﬁlename in the initializations blocks now is mmodbc.odbc, corresponding to the type of data wework with; all else is the same as in the Excel model. The ODBC database access facility can also be

Evaluate Xpress

Fair Isaac Corporation Conﬁdential and Proprietary Information

7

Evaluator guide

employed with MS Excel spreadsheets. However, some restrictions apply and we recommend to use
the Excel-speciﬁc data access as shown in the model folioexcel.mos.
Warning: In order to run this example, the ODBC driver for the corresponding data source must bepresent.
As an alternative to the Excel-speciﬁc access to spreadsheets shown in the example ﬁlefolioexcel.mos, Mosel also provides generic interfaces to XLS, XLSX, and CSV format ﬁles that are
usable including on non-Windows platforms. The model ﬁle foliosheet.mos uses the genericspreadsheet interface to access data in the ﬁle folio.xls (with this interface, the output ﬁle needs to
be closed when writing to it from Mosel). And the example foliocsv.mos works with CSV format
data held in the ﬁle folio.csv.
Further information








3.1.5

Using the ODBC module: “Xpress Mosel User Guide”, Chapter 2: ‘Some illustrative examples’ andthe whitepaper “Using ODBC and other database interfaces with Mosel”.
Documentation of the ODBC and spreadsheet interfaces: “Mosel Language Reference Manual”,
Chapters: ‘mmodbc’ and ‘mmsheet’.
Overview of other possibilities of data exchange with external sources: “Xpress Mosel User
Guide”, 16.1 ‘Generalized ﬁle handling’.
Examples of advanced communication methods with external data sources are given in thewhitepaper “Generalized ﬁle handling in Mosel”.
Mosel MIP and quadratic models

Open and run the following Mosel models:foliomip1.mos: This model introduces the array of binary variables buy to impose a constraint
limiting the number of different shares taken into the portfolio.
foliomip2.mos: This model redeﬁnes the array of variables frac to be semi-continuous, so that atleast a certain minimum amount of the budget is spent on each share that is bought.
folioqp.mos: This model uses a quadratic formulation to minimize the portfolio variance subject toachieving a target expected return. The Mosel program solves the problem twice, where the second run
imposes a limit on the number of shares taken into the portfolio.
For each model, explore the solution and information displayed in the Run Bar tabs.
Further information




3.1.6

“Getting Started with Xpress”, Chapter 6: ‘Mixed Integer Programming’ and Chapter 7: ‘Quadratic
Programming’.
Complete list of available MIP variable types: “Xpress Mosel User Guide”, Chapter 4: ‘Integer
Programming’.
Other problem types: Constraint Programming, Nonlinear Programming

All models we have seen so far use Xpress Optimizer for problem solving (chosen with the statement
uses "mmxprs" at the begin of the model). If we wish to use a different solver, we need to indicate
the name of the corresponding solver module.

Evaluate Xpress

Fair Isaac Corporation Conﬁdential and Proprietary Information

8

Evaluator guideOpen the model assign.mos: this model implements and solves an assignment problem with Xpress
Kalis, that is, using Constraint Programming (CP) techniques. For given sets of workers and machines
the problem is to assign exactly one worker to every machine, maximizing the total productivity. The
productivity of a worker depends on the machine he is assigned to.
You may observe several differences to the models we have seen previously:– The solver choice statement now is uses "kalis".
– The CP decision variables are of the type cpvar; their domain (=admissible values) can be set withthe procedure setdomain.
– CP models may have linear constraints (as in the ‘Total productivity’ constraint), however our model
also uses other types of constraint relations, so-called ‘global constraints’. The element constraint
formulates a discrete function in one variable, and the all_different relation states that all
variables in the constraint need to take a different value.
– The CP problem is solved with tree search methods. Instead of using the default search strategies, it
is usually preferable to choose a more problem-speciﬁc strategy (using procedure
cp_set_branching).
– The function cp_maximize is used to invoke the optimization.
All else (general structure, declarations, access to data, output printing) remains unchanged from what
we have seen so far.
When running this model with Workbench the model output appears in the Output pane at the bottomof the workspace as with Mathematical optimization problems and in debug mode the model entity
display in the Debugger tab is populated.
Other solver types available for Mosel include Xpress NonLinear for solving Nonlinear Programming
problems (module ’mmxnlp’), and the module ’mmnl’ gives access to the QCQP solver (for quadraticallyconstrained problems) within Xpress Optimizer. Each solver module comes with problem-type speciﬁcfunctionality (such as variable and constraint types)—please see the corresponding manuals.
Further information

Evaluate Xpress

Xpress Kalis provides access to the functionality of the Constraint Programming solver Kalis
from within the Mosel environment. For more information about Xpress Kalis see the documents“Xpress Kalis User Guide” and “Xpress Kalis Reference Manual”.
Xpress NonLinear provides access to a set of solvers for Non-Linear and Mixed Integer
Non-Linear Programming. Xpress NonLinear automatically selects a solver among the installedsolvers of the Xpress suite (Simplex, Barrier, SLP, or Knitro) depending on the detected problem
type. For more information about Xpress see the chapter “mmxnlp” of the “Xpress Mosel
Language Reference Manual” and the “Xpress NonLinear Manual”.

Fair Isaac Corporation Conﬁdential and Proprietary Information

9

Evaluator guide

3.1.7

Deploying Mosel models to Xpress Insight

Xpress Insight has its own installer that needs to be executed in addition to the standard installation of
the Xpress suite. Please see the Xpress Insight quick installation guide for details on the installation
process.
Among the examples in the examples/getting_started/Mosel subdirectory of the Xpress
installation you will ﬁnd the two Insight app archives folioinsight.zip andfolioinsightxml.zip. Both archives include a slightly edited version of the Mosel model ﬁlefoliodata.mos with the required input dataﬁle, the second archive adds an XML conﬁguration ﬁleand VDL view deﬁnitions for the Xpress Insight GUI.
The Evaluation Scenario 5 in Section 3.5 shows how to work with Xpress Insight.
Publishing Insight apps from Xpress Workbench
Now let us see how to re-generate the readily provided app archives with Workbench. Locate thearchive folioinsightxml.zip among the examples in the examples/getting_started/Mosel
subdirectory of the Xpress installation and unzip it into a new directory, say folioapp. Start up
Workbench with the option Open a project (or if Workbench is already open use the menu Project Open Project) and select the directory folioapp as the project location. Explore the contents of theapp archive by opening the project source ﬁles (.mos, .xml, .vdl).

Figure 3: Publishing an Insight app from Xpress Workbench

To create a new app, select the ’publish to Insight’ buttonof Workbench: you will be prompted toenter your Insight credentials (for a default desktop installation these are admin / admin123) andspecify a new name for your app. After successfully publishing the app a green box with a link to the
new app in the Insight Web Client appears at the top right corner of the Workbench workspace.
Following this link will take you to the app loaded into the Insight Web Client as shown in Figure 6. Clickonto the grey area to select and load a scenario, then choose the ’Run’ button (for further detail, please
see the instructions for the Insight Web Client in Section 3.5).

Evaluate Xpress

Fair Isaac Corporation Conﬁdential and Proprietary Information

10

Evaluator guide

Figure 4: Xpress Insight Web Client after app loading

Further information


Introductory example: “Getting Started with Xpress”, Section 9.4 ‘Deployment to Xpress Insight’.

Further examples: “Xpress Insight Web Client User Guide”.

Documentation: “Xpress Insight Developer Guide”.

3.1.8

Deploying Mosel models to a host language

Open a Mosel model and select Deploy  Deploy or click the deploy button. This will open the Deploy
dialog box. Select the programming language you wish to run the Mosel model from, and click the
Next> button. This will open a Source Code Dialog containing the code for deployment.
Further information


Introductory example (Java): “Getting Started with Xpress”, Chapter 9: ‘Embedding a Mosel
model in an application’.
Further examples (C/Java/C#/VBA): “Xpress Mosel User Guide”, Part III: ‘Working with the Mosel
Libraries’.

Documentation of Mosel C libraries: “Xpress Mosel Library Reference Manual”.

Documentation of Mosel Java libraries: “Xpress Mosel Library Reference Manual JavaDoc”.



Documentation of the Mosel .NET interface: “Xpress Mosel .NET Interface”.

3.1.9

Mosel console commands

As an alternative to running Mosel models within Xpress Workbench you may execute them with theMosel standalone version. This mode is often preferrable for testing and experimentation, for instance,
if you wish to invoke a sequence of model runs from a batch ﬁle.
At the command prompt, type the following command:
mosel exec foliolp

You will see output that looks like the following:

Evaluate Xpress

Fair Isaac Corporation Conﬁdential and Proprietary Information

11

Evaluator guideTotal return: 14.0667
treasury: 30%
hardware: 0%
theater: 20%
telecom: 0%
brewery: 6.66667%
highways: 30%
cars: 0%bank: 0%software: 13.3333%
electronics: 0%

You can also specify new values for model parameters to be applied when executing the model:
mosel exec foliodata MAXVAL=0.5 OUTFILE="result2.dat"

Further information
See “Xpress Mosel User Guide”, 1.1 ‘Entering a model’. See also “Xpress Mosel Reference Manual”, 1.1‘What is Mosel’ – ‘Running Mosel’.
3.1.10

Other Mosel topics

In addition to the topics addressed in this guide, the document “Getting Started with Xpress” describes
how to draw SVG user graphs in Xpress Workbench (Chapter 5: ‘Drawing user graphs’) and how toprogram heuristics with Mosel (Chapter 8: ‘Heuristics’). Further details on these topics can be found in
the “Xpress Mosel User Guide”, Part II ‘Advanced language features’ that describes Mosel’s
programming facilities and includes other examples of heuristics, and under Part IV ‘Extensions andtools’ – 16.3 ‘Graphics with mmsvg’.

Figure 5: Workbench with SVG user graph

Additional examples of modeling and programming with Mosel can be found in the directory\xpressmp\examples\. Also, the book “Applications of Optimization with Xpress-MP” (DashEvaluate Xpress

Fair Isaac Corporation Conﬁdential and Proprietary Information

12

Evaluator guide

Optimization, 2002) shows how to formulate and solve a large number of application problems with
Xpress, accessible online: http://examples.xpress.ﬁco.com/example.pl#mosel_book

3.2

Evaluation steps for Scenario 2
Develop a model in BCL for problems requiring Xpress Optimizer and deploy in any programming
language.
Tool for model development:

BCL

Type of problem:

LP, MIP, QP, MIQP

Tool for model deployment:

BCL Libraries (C, C++, Java, .NET)

See “Getting Started with Xpress”, Part II: ‘Getting started with BCL’, which presents examples in C++
language with detailed explanation. The examples are also implemented in C, Java, and C# and they
can be found in the corresponding directories\xpressmp\examples\bcl\⁎\UGExpl.
Further information
More examples and the complete documentation of BCL can be found in the “Xpress BCL Reference
Manual” and the “Xpress BCL Javadoc”.

3.3

Evaluation steps for Scenario 3
Use your custom application to develop the model and then call the Xpress Optimizer libraries.
Available for problems that can be solved with Xpress Optimizer
Tool for model development:

Custom application that calls optimizer libraries.

Type of problem:

LP, MIP, QP, MIQP, NLP, MNLP

Tool for model deployment:

Optimizer libraries (C++/C, Java, .NET, Python)See “Getting Started with Xpress”, Part III: ‘Getting started with the Optimizer’, which presents examples
in C language with detailed explanation. The corresponding example ﬁles can be found in your Xpress
installation (directory xpressmp\examples\getting_started\Optimizer). The Optimizer Javaand .NET interfaces provide similar functionality.
If you are working with Python please refer to the examples that are documented in the chapter‘Examples of use’ of the “Xpress Optimizer Python Interface User Manual”.
Further information

3.4

“Xpress Optimizer Reference Manual”

“Xpress Optimizer Python Interface User Manual”

For Non-linear programming (NLP,MNLP) see “Xpress NonLinear Reference Manual”.

Evaluation steps for Scenario 4
Run a matrix that is readily available in LP or MPS format. Such a model may be executed throughconsole commands, or applications that call Xpress Optimizer library functions.

Evaluate Xpress

Fair Isaac Corporation Conﬁdential and Proprietary Information

13

Evaluator guide

3.4.1

Console commands

At the command prompt, type the following sequence of commands to execute the MPS matrix in ﬁlefoliolp.mps:
optimizer
foliolp
readprobchgobjsense max
lpoptimize
printsolquit

You will see output that looks like the following:>optimizer
FICO Xpress Solver 64bit v8.4.4 Jan 31 2018(c) Copyright Fair Isaac Corporation 1983-2018. All rights reserved
Optimizer v32.01.07[C:\xpressmp\bin\xprs.dll]
Enter problem name > foliolp[xpress C:\] readprob
Reading Problem FolioLP
Problem Statistics
4 (0 spare) rows
10 (0 spare) structural columns
29 (0 spare) non-zero elements
Global Statistics
0 entities
0 sets0 set members[xpress C:\] chgobjsense max[xpress C:\] lpoptimize
Maximizing LP FolioLP
Original problem has:
4 rows10 cols
29 elements
Presolved problem has:
3 rows10 cols
19 elements
Its
Obj ValueS
042.600000
D514.066659
D
Uncrunching matrix
Optimal solution foundDual solved problem
5 simplex iterations in 0s

Ninf
2
0

Nneg
0
0

Sum Inf
3.166667.000000

Time
0
0

Final objective: 1.406665900000000e+01
Max primal violation(abs / rel) :
0.0 /
0.0
Max dual violation(abs / rel) :
0.0 /
0.0
Max complementarity viol. (abs / rel) :
0.0 /
0.0
All values within tolerances[xpress C:\] printsol
Problem Statistics
Matrix FolioLP
Objective ⁎OBJ⁎
RHS ⁎RHS⁎
Problem has

4 rows and

10 structural columns

Solution Statistics
Maximization performed
Optimal solution found after
5 iterations
Objective function value is
14.066659
type c/r to continue, anything else to finish >Evaluate Xpress

Fair Isaac Corporation Conﬁdential and Proprietary Information

14

Evaluator guideRows Section
NumberRow
At
Value
Slack ValueN
1 ⁎OBJ⁎BS
14.066659-14.066659
E
2 Cap
EQ
1.000000.000000
G
3 NA
LL.500000.000000
L
4 Risk
UL.333333.000000
type c/r to continue, anything else to finish >Dual Value.000000
8.000000-5.000000
23.000000

Columns Section
Number Column
C
5 frac(1)C
6 frac(2)C
7 frac(3)C
8 frac(4)C
9 frac(5)C
10 frac(6)C
11 frac(7)C
12 frac(8)C
13 frac(9)C
14 frac(10)[xpress C:\] quit

Reduced Cost
2.000000-9.000000.000000-14.000000.000000
1.000000-1.000000-2.000000.000000-10.000000

At
UL
LL
BS
LL
BS
UL
LL
LL
BS
LL

Value
.300000.000000.200000.000000.066667.300000.000000.000000.133333.000000

Input Cost
5.000000
17.000000
26.000000
12.000000
8.000000
9.000000
7.000000
6.000000
31.000000
21.000000

RHS.000000
1.000000.500000.333333

Further information
Xpress Optimizer Reference Manual”, Chapter 6: ‘Console and Library functions’.
3.4.2

Xpress Optimizer library functions

See “Getting Started with Xpress”, Chapter 14: ‘Matrix input’, which presents an example in C languagewith detailed explanation.

3.5

Evaluation steps for Scenario 5
Xpress Insight has its own installer that needs to be executed in addition to the standard installation of
the Xpress suite. Please see the Xpress Insight quick installation guide for details on the installation
process.
3.5.1

Inspecting Insight apps with the Insight Web Client

With a default desktop installation, start up the Xpress Insight Web Client by directing your web browser
to http://localhost:8860/ and use the default credentials of admin / admin123. Mosel
models with their data ﬁles and optional conﬁguration settings are input into Xpress Insight in the formof app archives. Among the examples in the examples/getting_started/Mosel subdirectory of
the Xpress installation you will ﬁnd the two archives folioinsight.zip andfolioinsightxml.zip. Both archives include a slightly edited version of the Mosel model ﬁlefoliodata.mos with the required input dataﬁle, the second archive adds an XML conﬁguration ﬁleand VDl view deﬁnitions for the Xpress Insight GUI. Figure 6 shows a screenshot of the Xpress Insight
GUI with the folioinsightxml.zip app.
Follow the instructions in Section 9.4.3 ‘Working with the Xpress Insight Web Client’ of the ‘Getting
Started’ guide to load the folioinsightxml.zip app and run a scenario. Edit the parameters andinput data in the view Portfolio data and re-run via the ’Run optimization’ button. You may also want toclone the scenario, edit some of its data (for example, try setting values 0.2 or 0.4 for the parameter’Maximum investment per share’) and compare the results in the view Portfolio data.

Evaluate Xpress

Fair Isaac Corporation Conﬁdential and Proprietary Information

15

Evaluator guide

Figure 6: Xpress Insight Web Client

Further information


Introduction to working with Xpress Insight: “Xpress Insight Web Client User Guide”.

Documentation: “Xpress Insight Developer Guide”.



Evaluate Xpress

Examples: load and explore the Insight app examples under the folder examples/insight of
the Xpress distribution, in particular quick_start.zip (app template) and the demo of VDL
features in vdl/vdl_language.zip.

Fair Isaac Corporation Conﬁdential and Proprietary Information

16