# Optimization and FICO Xpress FAQ

Question asked by Marketing Governance on Jun 13, 2009
Latest reply on Jun 19, 2013 by Rahul Sharma

Optimization
############

1. What is optimization

Optimization is the mathematical process of finding the best way of using your resources, at the same time not violating any of the constraints that are imposed. By "best" we usually mean highest profit, or lowest cost.

Optimization technology helps businesses solve complex real world problems and find the minimum (e.g. cost/time to deliver) or maximum (most profitable) outcome
Optimization helps businesses narrow their choices to the very best when there are virtually innumerable feasible options and comparing them is difficult.

Optimization gives executives the power to make more effective business decisions and build more productive systems based on:
-More complete data
-Consideration of all available options
-Careful predictions of outcomes and estimates of risk
-The latest decision tools and techniques

2. Why use optimization?

-Optimization is a rigorous approach which takes into account all of the factors that influence decisions in business. Optimization implies careful modeling of the business, a process which itself invariably gives valuable insights. Optimization is a mature technology with a proven track record across a wide variety of application areas such as:
Energy and Utilities
Banking, insurance, finance and securities
Transport, logistics and distribution
Scheduling, Workforce management
Production and Process industries

-Optimization will calculate the mathematically optimal decision ( the "solution" to the problem ). A heuristic ( problem/data specific "common sense/rule of thumb" ) approach gives no indication of how far away you are from the perfect solution, and therefore no idea of the missed benefits of better decision making.

-It can calculate less than optimal solutions which are a known % worse than the optimal, allowing a trade off between effort and reward.

-The mathematical techniques used apply to any problem formulation, so no need to rewrite your heuristic approach when you modify your problem or data.

-The problem is separate from the technique used to solve it, so changes are cheap.

-"What-If" analysis becomes easy. Limiting resource constraints are identifiable and constraints can easily be added, removed or relaxed.

-The software can be instructed to search for multiple solutions to problem with the same or similar quality, allowing a final solution to be selected against additional external criteria

-The quality difference between an optimization solution and heuristic solution can immediately be translated into absolute profit or cost benefit according to the model.

3. How Optimization works

An optimization model is created that represents the business problem. The model will include:

-Decision variables. Choices that need to be made e.g. How much product to make, who works which shift, what trades to make.

-Constraints on the values that the decision variables can take e.g. maximum number of available machines, person A can only work one shift at a time.

-Relationships between variables e.g. if you choose to build X cars of type A then the total number of part B required is Y.

-A cost or objective function. This function calculates a "quality" value based on a given set of values for the decision variables ( a "solution" ) in the model.

-The objective function may be the total cost of making all the decisions implied by the variable values chosen, in which case the software will seek the solution with the lowest objective value ( minimization ).

-Or the objective function may be the total profit, in which case the software seeks the solution with the maximum objective value.

-Variables can be restricted to take integer/binary values only.

-In theory the software considers all possible combinations of variable values to find the optimal set of decisions. A heuristic approach will consider only a handful of pre-programmed combinations at best.

-The user can deploy the decisions implied by the solution knowing the cost or benefit as defined by the model.

4. Optimization and FICO Xpress

Xpress optimization suite is the most advanced mathematical modeling and optimization software.

Xpress improves the quality of business decisions by solving large-scale, complex and otherwise unsolvable optimization problems.

It provides operations researchers and consultants an easy-to-leverage tool that is robust and reliable.

Xpress is a fully integrated set of advanced optimization tools.

Xpress makes optimization more accessible and reduces time to market

Xpress has the components and development tools to make it easy to leverage optimization technology.
-Solve the problem
-Deploy optimization to the users

Architecture
############

5. What components are available?

Xpress-Optimizer
----------------

The Xpress-Optimizer is a sophisticated multi-threaded optimization engine available as a callable library and a command line tool. The Optimizer includes state-of-the-art algorithms to solve the following types of optimization problem:

Linear problems ( LP )
Mixed integer problems ( MIP )
Quadratic problems ( QP ) and mixed integer quadratic problems ( MIQP )
Quadratically constrained problems ( QCQP ) and mixed integer quadratically constrained problems ( MIQCQP )
Convex general non-linear problems ( NLP )

The solver includes robust simplex and barrier methods, a sophisticated branch-and-bound algorithm, extensive presolving operations and cutting edge heuristics for finding solutions very quickly. The shared memory, deterministic parallelism can exploit as many CPU cores as are available for fast execution times. Xpress Optimizer uses ultra efficient sparse matrix handling and on-the-fly data compression to solve the largest problems that industry has to offer.

The callable library provides both a low-level matrix orientated API and an object orientated model construction interface called BCL.

Xpress-Optimizer is designed for out-of-the-box high performance on a wide range of model types. It also features a number of customisable parameters. The Tuner tool allows the user to find values for the algorithm parameters which improve on the solver default values for their models, often leading to significant performance gains. The Tuner uses multi-threaded genetic algorithms to find the best parameter settings for a model or set of models, and presents the results of the search using a clear graphical interface.

Xpress-Mosel
------------

Xpress-Mosel allows you to formulate your problem, solve it using one or several of the Xpress solver engines and analyze the solution, using a fully-functional compiled programming language specifically designed for the purpose. Mosel is fully integrated with the Xpress-Optimizer and can leverage all of the solver abilities.

Mosel ships with a complete visual editor called IVE. IVE incorporates a Mosel program editor, compiler and execution environment, debugger and profiler. It features development and deployment wizards, visualizations of the solve progress and results, and a full drag and drop editor for authoring XAD GUI resources.

The combination of high level model definition language and traditional programming language gives Mosel unprecedented power and flexibility while being extremely intuitive to use. Mosel makes the simple tasks easy, but advanced users will find it perfect for implementing their own heuristic and decomposition methods.

Mosel has database ( ODBC, Excel, Oracle ) connectivity, text file I/O and in-memory data exchange abilities. Furthemore, Mosel is extensible. There are several third party modules available which extend the language and a published interface for creating your own. Consultants will find the ability to create plugin modules to interface to legacy systems or exotic data formats particularily appealing.

The Xpress-Application Developer (XAD) extends Xpress-Mosel with an API for graphical user interface development, transforming Mosel into the complete package for optimization application development, from the mathematical representation of the problem to visualization and user interfacing. IVE features a full drag and drop resource editor for authoring the GUI.

Xpress-Kalis
------------

Xpress-Kalis is Constraint Programming software based upon the Kalis solver by Artelys. It specializes in discrete combinatorial problems as they frequently occur, for instance, in scheduling and planning problems. Kalis is available as a Mosel module and extends Mosels capabilities to include Constraint Programming (CP) models and hybrid MIP/CP techniques.

Xpress-SLP
----------

Xpress-SLP is a solver for non-linear programming problems (NLP) and mixed integer non-linear non-convex problems (MINLP). It uses successive linear approximation which has been developed from techniques used in the process industries and it is capable of solving large problems with many thousands of variables. Xpress-SLP is available as a callable library, a command line tool and as a Mosel plugin.

6. What platforms are supported

Windows 32bit Windows 2000, Windows XP, Windows Server 2003, Vista AMD Duron/Intel Pentium3 or later x86 CPU
Windows 64bit Windows XP, Windows Server 2003, Vista Any AMD64 or Intel EM64T enabled 64bit CPU
Windows 64bit Windows XP, Windows Server 2003 Itanium 2
Linux 32bit RedHat 9 (glibc2.3+) compatible AMD Duron/Intel Pentium3 or later x86 CPU
Linux 64bit RedHat 9 (glibc2.3+) compatible Any AMD64 or Intel EM64T enabled 64bit CPU Solaris 32bit Solaris 7-10 Sun Ultra Sparc 3 or later
Solaris 64bit Solaris 7-10 Sun Ultra Sparc 3 or later
Solaris 64bit Solaris 10 Any AMD64 or Intel EM64T enabled 64bit CPU
AIX 32bit AIX 5.2/5.3/6.1 IBM PowerPC
AIX 64bit AIX 5.2/5.3/6.1 IBM PowerPC
HP-UX 32bit HP-UX 11.11 ( v1 ) and later HP PA-RISC
HP-UX 64bit HP-UX 11.11 ( v1 ) and later HP PA-RISC
HP-UX 64bit HP-UX 11.11 ( v1 ) and later Itanium 2

7. What language is FICO Xpress developed in?

Xpress is developed in C and compiled to machine dependent code for the target platform. Wrapper interfaces are provided to other languages: C++, .NET, VB, Java.

8. Can FICO Xpress be used in a WebSphere or other Java environment?

Yes, Xpress libraries ship with Java interfaces which can be called from the pure Java application code. This approach is used by several large companies including Oracle.

9. What are the hardware requirements for FICO Xpress?

FICO Xpress is a CPU-intensive application. During the optimization process itself, it operates most efficiently when it has dedicated access to the CPU. If run in conjunction with other applications, or several instances of Xpress are run at once, then the performance of Xpress and any other applications is severely degraded.

We do not need to remind you that computer hardware specifications change very quickly, and the specifications quoted below are subject to continuous change and improvement. However, the factors themselves will remain important.

CPU performance
---------------

The single most important characteristic of the hardware is raw CPU speed. The performance of Xpress will scale fairly linearly with effective CPU speed for all sizes of model ( assuming no other constraining factors ).

FICO Xpress currently performs best on the Intel Core CPU architecture. This family of CPUs include the Core 2 desktop CPUs and the new Xeon server CPUs ( the Xeon line is now a mixed architecture line comprised of the old netburst Pentium 4 based Xeons and the new Core based Xeons. Models 30**, 32**, 51** and 53** are the best choices. ).

Desktop recommendations: Intel E6700, X6800, QX6700, QX6800

Server recommendations: Intel 3070, 5150, 5160, X5355, X5365

The absolute minimum processor requirement is an Intel Pentium 3 or equivalent.

Memory considerations
---------------------

For very small models, quantity and speed of memory will have little or no impact on performance as the data will be cached on the CPU. For models that are larger than the available cache, performance will increase slightly with memory speed. If the amount of memory required by Xpress exceeds the available physical memory then performance will seriously degrade as virtual memory is paged in by the operating system. Avoid this situation if at all possible.

Use of the IVE development environment will double the amount of memory required. Use of Parallel MIP will increase the amount of memory required proportional to the number of threads employed in the solve.

Recommendations: 2GB of memory for 32bit operating systems, 4GB for 64bit operating systems.

Other components
----------------

FICO Xpress sometimes creates temporary files. The implementation of the I/O routines is such that access speed of the local hard-drive will not perceptably affect the performance of the software. However, we would not recommend these temporary files be directed to considerably slower media such as network drives or usb flash memory.

Operating systems
-----------------

If performance and cost are the only selection factors then Intel and AMD x86/x64 CPU families, as both the cheapest and fastest mainstream processors available, would be the obvious hardware choice. This restricts the choice of operating system to either Windows or Linux. Our primary development platform is Windows and this is our recommended operating system.

Parallel Solving
----------------

Current Intel multi-core CPUs share a single interface to the main memory which is suitable for users of Parallel MIP ( multiple cores solving the same one problem ). Users who wish to run multiple different non-trivial models concurrently should instead consider a multi-cpu ( multiple CPU sockets on one motherboard ) system to avoid the memory bottleneck inherent in single CPU multi-core machines.

Future AMD CPUs are expected to improve memory access for the single CPU, multi-core architecture.

32bit or 64bit

--------------

The 64bit software generally runs 5-15% faster than the equivalent 32bit software ( one exception to this trend is where compilation of a mosel model takes a substantial portion of the overall time, as compiling a model in 64bit Mosel takes slightly longer than in 32bits ). However, the main reason for moving to 64bit is the vastly increased potential available memory.

No matter how much physical memory is installed in a machine, the maximum theoretical amount of memory that a 32bit process can access is 4GB. On 32bit Windows the upper limit is even less at 2GB. Larger models can easily exceed this even without the use of IVE or Parallel MIP.

64bit Windows removes this upper limit ( actually there is still an upper limit but it wont be an issue for decades ). Current RAM prices mean that its quite cheap to populate a machine with 8GB or more and the entire physical memory is available to an Xpress process.

10. What memory limitations are there for Xpress on a 32bit/64bit platform?

No matter how much physical memory is installed in a machine, the maximum theoretical amount of memory that a 32bit process can access is 4GB. On 32bit Windows the upper limit is even less at 2GB. Larger models can easily exceed this even without the use of IVE or Parallel MIP.

64bit Windows removes this upper limit (actually there is still an upper limit but it wont be an issue for decades). Current RAM prices mean that its quite cheap to populate a machine with 8GB or more and the entire physical memory is available to an Xpress process.

11. What can be done to reduce memory requirements for Xpress?

Xpress-IVE adds an significant memory overhead when used to execute your model. If you are near the limit of addressable memory in 32bits ( ~1.8GB-2GB ) then you can execute the model using the Mosel command line console rather than IVE.

The Xpress parallel algorithms consume additional memory. Each thread will have a copy of the presolved problem so memory requirements, at the possible expense of performance, can be reduced by fixing the number of threads to 1 with the the Optimizer control THREADS=1 and the equivalent Mosel command setparam("XPRS_threads", 1).

12. Can 64bit Xpress exchange data with Microsoft Office?

Microsoft Office does not ship with 64bit compatible ODBC drivers. Xpress has an alternative and recommended COM based interface to Excel which will work in 32bit or 64bit, but 64bit Xpress cannot communicate with Access. We recommend porting the data to SQL server or other database with 64bit ODBC driver support.

Installation and Licensing
##########################

14. I have an installation problem, what do I do.

Consult the Licensing and Installation Guide [LINK] which has step by step instructions and a troubleshooting section. If you still have problems and have a paid support contract for your Xpress license then please contact Support@FICO.COM and put Xpress at the start of the email subject.

15. I have a licensing problem/I get a licensing error.

Consult the Licensing and Installation Guide [LINK] which has troubleshooting section and list of common licensing errors. If you still have problems and have a paid support contract for your Xpress license then please contact Support@FICO.COM and put Xpress at the start of the email subject.

16. The Installshield installer fails on my machine.

FICO Xpress is simple to install manaully. The Licensing and Installation Guide [LINK] has step by step instructions.

17. Can FICO Xpress be used in a virtual e.g. VMWare environment?

Yes, with some caveats. See the Virtualization document in the Resources area for more information.