Blog Post

FICO® Xpress Optimization Blog
5 MIN READ

Xpress Solver 9.2 - Jul 2023

FICO's avatar
FICO
Community Manager
3 years ago
Xpress Solveris the technology component that supports all of FICO's optimization solver technologies including:
  • Xpress Optimizer: core engine comprises of LP (simplex and barrier), MIP, (MI)QP, (MI)QCQP, and (MI)SOCP solvers. It also provides core services, like the tuner, to other components.
  • Xpress Nonlinear: provides successive linear programming and an interior point solver for nonlinear problems, integrating closely with the Optimizer’s MIP framework.
  • Xpress Global:provides an engine for solving nonlinear problems to global optimality integrating with the components of Xpress Nonlinear and Xpress Optimizer.
  • Xpress Kalis: provides constraint-based programming capabilities. Combined with the optimizer, it can make use of MIP relaxations of the CP problem.
The latest Xpress Solver 9.2 delivers major functionality and performance enhancements including the ability in Xpress Optimizer to solve non-convex quadratic problems, significant performance improvements in solving convex quadratic objectives, more controls for executing a search for an Irreducible Infeasible Set (IIS), and the general availability of a global optimization solver.

Highlights of this release include:

Performance Enhancements
  • The MIP engine is 7% faster overall and 10% faster on hard problems (> 100s) compared with the previous release Xpress 9.0. Compared with Xpress 8.14, the MIP engine is 16% faster overall and 25% faster on hard problems (>100s). Time comparisons are done using shifted geometric mean with a shift of 10s. These performance enhancements are a result of improvements to several core areas of the engine including:
    • Cutting: A new class of cutting planes called Reformulation-Linearization Cuts (RLT) cuts have been introduced. While these cutting planes are particularly suitable for non-convex quadratic problems, they are also applicable for MIPs when the Optimizer can detect implied product relations in MIP models. Furthermore, improved work limits for aggregated Mixed-Integer Rounding cuts (MIR) and strong Chvátal-Gomory cuts have led to improved performance.
    • Branching: Improved branching strategies have been implemented that target problems with highly degenerate objective functions.
    • Heuristics: In Xpress 9.0, a new heuristic called Feasibility Jump was introduced, which ran in parallel to the cut loop. In this release, the parallel root heuristic framework has been extended whereby the ‘L’ (LP-centered local-search) heuristic is also run in parallel when enough threads are available (at least 16 by default) or allocated by setting controls for running background heuristics. The controls allow users to specify the number of additional threads to allocate for running parallel root heuristics and select which heuristics to run. Additionally, a new heuristic called shift-and-propagate has been introduced that starts with an integer vector (that could be possibly infeasible) and applies fixings and propagations to improve the solution. This heuristic can be currently invoked by explicitly turning it on via a control, or as part of the heavy heuristic mode of HEUREMPHASIS control.
  • The QP primal simplex algorithm is 2.7 times faster overall and 7.7 times faster on hard problems (> 100s) compared to the previous release Xpress 9.0. The MIQP solver is 13% faster overalland 37% faster on hard problems compared with Xpress 9.0.
Enhancements to the Irreducible Infeasible Set search
  • New controls have been introduced that allow which aspects of the model to keep or exclude in the model in the search for IIS. These include binary integralities, fixed variables, variable bounds, and so forth. Please refer to the documentation for the list of all constraint types that can be included or excluded in the IIS search.
  • The logging has been improved to show the number of constraints in the IIS found so far and the number of constraints in the IIS, in addition to the elapsed time.
  • Users can obtain a conflict when the IIS search is interrupted. This conflicting set of constraints may not necessarily form IIS but may produce a set which is smaller than the original set of constraints.
  • IIS can now be run on problems containing general and piecewise linear constraints, which are modeled using the higher-level Python API.
  • When enabled for global optimization, IIS can be run on infeasible nonlinear problems.
Global optimization
  • In addition to convex quadratics, Xpress Optimizer can now solve non-convex quadratic optimization problems to global optimality.
  • A new global optimization solver is now generally available. This engine can solve mixed-integer non-linear programming problems to global optimality. This solver was released in beta in Xpress 9.0. It leverages the technology inside Xpress Optimizer by using its branch-and-bound machinery, and Xpress NonLinear for heuristics during the beginning of the search or during spatial branch-and-bound.
  • Compared with the beta, this release is significantly faster: On internal benchmarks the solver is more than 2.13 times faster overall and 6 times faster on hard problems (>100s).
  • Changes from the beta:
    • The control XPRS_GLOBALSOLVE, which used to trigger global optimization solver has been replaced by the control XPRS_NLPSOLVER. When a license is available, the global optimization solver is the default solver for (mixed integer) nonlinear problems.
    • Users can resume solves after interrupting it e.g., by time limit or node limit.
    • Certain advanced features such as user callbacks are currently not supported in the global optimization solver. Please see the release notes for details.
  • A new tuner method has been introduced that allows tuning the global optimization solver.
Interfaces
  • R API now supports non-linear modeling and solving. User functions and multi-starts are not supported yet at the moment.
  • SLP and NLP attributes are now available in Java and C# in the same way as XPRS attributes.
  • Obsolete function getiis has been removed from all APIs
  • Matlab: XPRSinit() and XPRSfree() are now available  as xprsinit() and xprsfree().
  • Improvement of Python API
    • Names are no longer limited to 150 characters.
    • Problems with non-linear, piecewise linear or general constraints that were transformed into MIPs are now postsolved if infeasible.
    • New constants were added to the xpress package that reflect the corresponding stop statuses in the library
    • The following functions were added: problem.getnames(), problem.nlpgetformula(), problem.nlpgetformulastr(), problem.slpgetcoefstr(), problem.tuneprobsetfile().
Other Changes
  • BCL libraries libxpb.so, libxprb.dylib, xprb.lib, and xprb.dll are no longer shipped. Since the past several releases, these libraries have been provided for backward compatibility purposes only. All the relevant BCL functionality had been provided by the core Optimizer libraries.
  • Support for RHEL6 is being dropped.

See the Xpress release notes for more details. 
Updated 3 years ago
Version 3.0
No CommentsBe the first to comment