Manual Tuning Overview
Solving a mixed integer problem usually involves five stages, depending on how hard the problem is:
- Presolve.
- Solving the initial LP relaxation.
- Heuristics.
- Cutting.
- Branch-and-bound tree search.
This guide addresses those five parts of the solving process separately in the following sections.
How to tune the Xpress Optimizer for a particular problem depends very much on what your goal is:
- Find any solution.
- For some problems it can be hard to find that first integer solution. The emphasis in such a case will often be on heuristics and on guiding the branch-and-bound dives away from potential conflicts.
- Find good solutions quickly.
- If the goal is to find better solutions quicker, without necessarily providing any bound on how good the solutions are, the emphasis will usually be on heuristics and a fast branch-and-bound search of the solution space. Note that the Optimizer has a special mode with a focus on primal heuristics. To activate this mode, set HEUREMPHASIS=1. We advise trying this first before conducting a long tuner run or trying various heuristic controls individually.
- Solve the problem to optimality.
- The Optimizer is by default tuned towards finding a proven optimal solution to a problem. Default settings balance heuristics for finding good solutions with the necessary raising of the best bound to prove optimality.
You can customize the Tuner for your individual goals. The TUNERMETHOD control allows using different ground sets of controls that the Tuner evaluates. The TUNERTARGET control allows setting different measures by which individual solves should be compared, including the time, the gap, the final solution value.
Multi-threaded Solves
The Xpress Optimizer is a multi-threaded solver and will always try to use all available processing cores in your computer. It automatically detects the number of cores available and will limit the number of parallel threads it can start accordingly.
If your Xpress Optimizer has to share system resources with other applications that might be running simultaneously, it might be necessary to limit how many threads, and thereby how many cores, the Xpress Optimizer is allowed to use. Use the THREADS control to set such a limit. By setting THREADS=1, you force the Xpress Optimizer to use a single thread only, which effectively turns off all parallelization. Note that in the case of Tuner runs, THREADS controls the number of threads per solve run, while the additional TUNERTHREADS control determines how many different settings are tried in parallel solver runs. Consequently, the product of THREADS and TUNERTHREADS should be equal to or less than the number of available threads on the machine.
© 2001-2025 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.