Introduction
The FICO Xpress Optimizer is a powerful optimization engine that sits at the core of the FICO Xpress Optimization Suite. It can solve a wide range of mathematical programming problems, such as linear problems, quadratic problems, and mixed integer versions of these. The Xpress Optimizer can be called either indirectly, through the Mosel modeling language, or directly through various programming APIs, including the Builder Component Library (BCL).
The FICO Xpress Optimization Suite also includes the ability to solve general nonlinear problems to proven global optimality, using the capabilities of FICO Xpress Global, or, alternatively, FICO Xpress Nonlinear to get locally optimal solutions for nonlinear problems. This guide is primarily concerned with the Xpress Optimizer. SOme suggestions apply for Xpress Global as well, and for specific information on how to get the most out of Xpress Nonlinear, please refer to the Xpress Nonlinear Reference Manual.
The Xpress Optimizer employs many diverse techniques when solving a given problem. Which technique to apply and with how much effort to put into it is highly configurable. Most of the solver components' behavior can be modified — or tuned — by setting some control parameters. The full list of these control parameters is available in the Xpress Optimizer Reference Manual. The default values for these controls have been selected to provide the best performance across a wide variety of problems. But what works best on average might not be the best possible strategy for your specific problem. If performance is critical, it is often possible to fine-tune the control parameters to improve on the default behavior for a selected set of problems.
For instances that should be tuned for heuristic performance, we recommend trying HEUREMPHASIS=1. This setting addresses instances that will likely not solve to proven optimality within a given time limit. It aims at reducing the primal-dual gap in an early stage of the phase, primarily by running more aggressive heuristics.
For further fine-tuning, the Xpress Optimizer includes a built-in Tuner accessible from the console, through an API, or within the Xpress Mosel modeling language itself. It can tune all problem types supported by both the Xpress Optimizer, Xpress Global and Xpress Nonlinear, as long as the necessary solver licenses are available. The Tuner is also available through the Workbench integrated development environment. Section "Using the Tuner" of the Xpress Optimizer Reference manual describes the Tuner in more detail.
The Tuner is a tool intended to automate the process of discovering better control parameter settings for either a single problem instance or a small collection of problem instances. When tuning a single problem instance, it works directly with the problem currently loaded into the Xpress Optimizer. It will systematically test the problem against a range of different control settings. Any improved control settings discovered will be printed in the output log. At the end of the tuning session, the overall best-performing control collection is printed and applied to the problem itself. A small summary will be included, highlighting the contribution from each individual control setting.
A single tuning run will typically involve solving each problem at least 100-200 times and can therefore become very expensive for more difficult problems. The Tuner also includes a convenient feature to automatically include permuted versions of the problem in the tuning set to ensure that the suggested control parameter settings are more robust against random fluctuations of the solution path. This will significantly increase the tuning time, though, as each additional permutation introduces an additional solve for each control combination.
This guide is intended to help you get the best performance out of the Xpress Optimizer for harder problems, in particular mixed integer problems (MIPs). For purely continuous linear and quadratic problems, the tuning choices are fairly limited, and the choice usually amounts to selecting the most appropriate basic algorithm. The number of procedures applied within a mixed integer problem solver goes far beyond that of a continuous problem solver, with an accompanying wide array of tuning options.
In the following section, we will describe how to invoke the automatic built-in Tuner through the different interfaces. The bulk of this document focuses on how to tune manually using the Xpress Optimizer console and how to use the hints provided in the output logs to select better control settings.
© 2001-2024 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 described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.