Blog Post

FICO® Xpress Optimization Blog
5 MIN READ

FICO® Xpress Solver 9.4 - Apr 2024

FICO's avatar
FICO
Community Manager
2 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.4 delivers several features including new modeling interfaces, a new LP algorithm, performance improvements, and more.

Highlights of this release include:

Xpress release 9.4 introduces the new object-oriented .NET and Java interfaces for Xpress Solver. The new interfaces are now available in addition to the matrix-oriented interfaces. The Python API of the solver has also seen major updates.
Linear programming solving technology in general hasn’t seen major new algorithmic entrants in recent years. We are changing the lack of new methods in the LP space with this Xpress release with the launch of anew Primal-Dual Hybrid Gradient method. This method is particularly well-suited for very large-scale problems where memory becomes an issue. The algorithm can handle such problems because, unlike other methods, it does not rely on matrix factorizations. Warm-starting and crossover are both possible with this method.

New Object-oriented .NET and Java Interfaces
  • All Xpress Solver features are immediately available through the new interfaces.
  • The new interfaces use and integrate nicely with modern software concepts. For instance, Java lambdas and streams greatly enhance the functionality and expressiveness of the language.
  • The new interfaces provide the XpressProblem class and related functions that enable modelling of mathematical problems in an object-oriented manner. Since XpressProblem is a subclass of XPRSprob it also gives developers direct access to the matrix-oriented interfaces.
  • The new object-oriented .NET and Java interfaces introduced with this release provide an alternative for current FICO Xpress BCL .NET and Java users and we provide guidance for an easy transition.
Python Interface Enhancements
  • The Python interface now supports creating variables that are linked to the problem itself. Thus, when their properties are modified, the Optimizer problem is updated.
  • Instead of calling xpress.var(properties) and then adding the resulting variable to the problem with problem.addVariable(myvar), call problem.addVariable(properties) directly. Same applies for xpress.sos()
  • Instead of calling xpress.vars(indices, properties) and then adding the resulting dictionary or array of variables to the problem with problem.addVariable(myvars), call problem.addVariables(indices, properties) directly.
  • The problem.loadproblem() and problem.read() Python functions now create linked objects by default.
  • It is advised to update existing models to use the new API. Please note that the behavior of 9.3 and earlier releases can be restored by passing the argument unlinked=True.
  • Python 3.7 is no longer supported since it has reached its end of life.
Performance Enhancements
  • The MIP engine is 4% faster overall and 7% faster on >100s problems compared with the previous release Xpress 9.2. Compared with Xpress 9.0, the MIP engine is 14% faster overall and 21% faster on >100s problems. In the heuristic emphasis mode, the improvements in the Primal-Dual Integral (PDI) metric compared with Xpress 9.2 and 9.0 are 6% and 14%, respectively. The Time comparisons are done using shifted geometric mean with a shift of 10s. The PDI is a metric favor lowering the gap (because of finding high-quality solutions early during the search). These performance enhancements are a result of improvements to several core areas of the engine including:
    • Branching: Improved branching strategies, which includes a score based on the efficacy of Gomory cuts. Branching has also been improved for Special ordered sets (SOSs) and consequently, implied SOSs that were detected. Other improvements include enhanced node selection strategies, aggressive dual pivoting after a tree restart, and several other tree re-start strategies.
    • Cutting: The multi-commodity flow cut (MCF Cuts) separator saw an overhaul, and a new control, MCFCUTSTRATEGY has been introduced to control MCF cut separation.
    • Heuristics: A new heuristic called fix-propagate-repair heuristic has been introduced, which combines a limited depth-first search with constraint propagation. This heuristic is particularly useful for problems where finding a feasible solution is difficult. The heuristic is part of the root node parallel heuristics framework. Furthermore, in the heuristic emphasis mode, a new heuristic has been introduced, which runs in the background in parallel to the root cutting procedures aimed at finding good solutions quickly. The aggressiveness with which the local neighborhood search heuristics has also been improved in the heuristic mode, which improved the PDI metric.  
    • Presolve: Improvements have been made to the presolve eliminations fill-in.
  • The global optimization engine is 20% faster overall and 2.53x times faster on >100s models compared with Xpress 9.2. Compared with the beta release in 9.0, the global optimization engine is 3.74 times faster overall and 13.3 times faster on > 100s models. The performance improvements are a result of
    • Improved outer-approximation cuts strategies in the tree and particularly for trigonometric functions
    • Frequency at which the SLP solver is run as a local search heuristic, and
    • Improved selection of branching points for odd-power polynomials and trigonometric functions.
  • The barrier algorithm uses AVS2 instructions by default if they are available. This results in 5% improved barrier performance overall and 8% improvement on > 100s models.
Other new Xpress Solver features include:
  • The preintsol callback is more flexible. Users have the ability to perform cutting, bound tightening, adding solutions and branching in the preintsol callback. The preintsol callback is fired when an integer solution is found by heuristics on during the branch-and-bound search, but before that solution has been accepted. This feature offers users the ability to implement advanced branch-and-cut algorithms.
  • The addmipsol method can now be called from more callacks including, preintsol, optnode, intsol, prenode, and nodelpsolved
  • New controls have been introduced, which allow users to adjust for the performance and tuning of the global solver.
See the Xpress release notes for more details.
Updated 2 years ago
Version 3.0
No CommentsBe the first to comment