|
  |
 |
|
| ILOG CPLEX Performance Tuning for Mixed Integer Programs (MIPs) |
|
Because of the combinatorial nature of integer programs, ILOG CPLEX users may have more trouble getting good performance with integer programs than with linear or quadratic programs. ILOG CPLEX has many parameters that allow users to customize the way the ILOG CPLEX branch and bound algorithm operates. While this variety of parameters provides many different ways to improve performance, a user cannot realistically experiment with all the possible combinations of parameter settings. We recommend the following tactics for solving MIPs with ILOG CPLEX 10.0. Many of these recommendations are also effective with earlier versions of ILOG CPLEX. Refer to the ILOG CPLEX user manual for additional information about any of the terms below.
Note: Before trying to improve performance, you must first locate the current performance bottleneck. ILOG CPLEX provides a node log that shows the progress of its branch and bound algorithm on an MIP. In some cases you may find that slow node LP solve times cause slow performance. In that case, the suggestions in the ILOG CPLEX Performance Tuning for Linear Programs page may help. The information below focuses on performance issues that involve the MIP algorithm directly.
- Check the default settings
The default settings of ILOG CPLEX work well on most problems. Always try default settings with the current version of ILOG CPLEX. Longtime ILOG CPLEX users may have found that other settings worked better for older versions, like ILOG CPLEX 4.0 and 5.0. However, with the major improvements to the integer programming algorithm in version 6.5 through 10.0, non default settings that worked best for older versions may hinder performance now.
- Set probing to three
Probing can dramatically improve performance, although it may also consume significant amounts of time. It helps on problems with binary variables rather than general integer variables. Starting with ILOG CPLEX 10.0, the probing time limit parameter can help when aggressive levels of probing are effective but take too long. Stopping aggressive probing before completion can still yield a significant number of binary variable fixings.
- Experiment with the MIP emphasis parameter
If you don't need an optimal solution, set the MIP Emphasis parameter to 1 so that ILOG CPLEX finds more feasible solutions. You may also want to set a suitable MIP gap value to instruct ILOG CPLEX to stop as soon as it has a solution within a specified percentage of optimality. For example, set the mipgap parameter to .05 if you want ILOG CPLEX to stop as soon as it has a solution within 5 percent of optimality.
Conversely, setting the MIP Emphasis parameter to 2 or 3 can help when ILOG CPLEX makes good progress finding integer solutions, but performance stalls due to lack of progress in the Best Node value that provides a bound on the best possible integer solution objective value. Both these settings try to make more progress in the Best Node value, but setting 3 puts even less emphasis on finding a solution.
- Use the ILOG CPLEX MIP Start, RINS heuristic and solution polishing features
ILOG CPLEX 9.0 and 10.0 added new features that can help find feasible solutions much faster. Support of partial and infeasible MIP starts, solution repair, the RINS heuristic, and solution polishing are all very useful features by themselves. However, perhaps more importantly, they enable additional MIP tuning tactics that might otherwise be ineffective. For example, setting ILOG CPLEX's MIP emphasis parameter to 3 can dramatically improve progress in the best node, but often at the expense of finding feasible solutions. However, by providing a partial or infeasible MIP start, using solution repair to translate it into a feasible solution, and using the RINS heuristic to improve upon that solution, you may be able to compensate for the lack of feasibles that would otherwise result from setting the MIP emphasis parameter to 3.
Solution polishing is a local search heuristic that can help when run with the MIP emphasis parameter set to 1, as it can improve feasible solutions quickly. Consider it also as an alternative to the branch and bound algorithm when solving node LPs comprises the majority of run time and limits progress. For such cases, try running branch and bound for a limited amount of time to obtain at least one feasible solution, then use solution polishing to improve the solutions. While this won't help move the best node, it can help for models where you need good solutions quickly, and progress in the best node seems unlikely.
- Use aggressive settings for cut generation
Set the cuts parameter to 2 (set MIP cuts all 2 in the ILOG CPLEX Interactive Optimizer) to increase cut generation and tighten the MIP that ILOG CPLEX optimizes. You should also set the cover or disjunctive cuts parameters to 3.
- Use knowledge about the model to set particular parameters
If none of the above settings works well, specific knowledge of the problem may suggest particular parameter settings. For example, you may know that the nature of your problem is such that branching up on fractional variables will yield good feasible solutions quickly.
- Examine the node log for causes of slow performance
By setting the MIP display parameter to values ranging from 2-5, you will get detailed information about the progress of your MIP optimization in the ILOG CPLEX node log. The log will help you find the cause of slow performance. Look at the MIP Troubleshooting section of the ILOG CPLEX User Manual for examples and more information.
- Use priority orders
Priority orders instruct ILOG CPLEX to branch on integer variables, placing higher priorities first. Priority orders require some knowledge of the model to create, but they can dramatically improve performance. They are particularly useful on models involving time periods, and they help with models that have integer variables that depend on other integer variables. For those models, give higher priority to the independent variables.
Add cuts based on your knowledge of the model
ILOG CPLEX performs an expert mathematical examination of your model to derive cuts. But because ILOG CPLEX ultimately views your problem as a generic integer program, it may not be aware of certain logical aspects of your model. Because you or your customer may be aware of these logical aspects, you can add cuts to the model that ILOG CPLEX does not determine.
- Reformulate the model
Two formulations of the same model yield dramatically different results. For an example, see the article Rethinking Mixed Integer Model Formulations.
|
|
 |
 |
 |
Learn to model with ILOG CP Optimizer |
 |
 |
 |
This presentation offers a tutorial for solving a detailed scheduling problem with ILOG CP Optimizer. It features an introduction of detailed scheduling problems, a walk through a simple detailed scheduling model where the modeling concepts of ILOG CP Optimizer are exposed, and the full modeling of a problem within the ILOG OPL Studio environment, starting from its description in plain English. Each section of the presentation is easily accessible via a chapter selector.
(Total Duration: 45 minutes)
|
 |
 |
| |
|
|
 |
 |
 |
 |
ILOG ODMS Demo |
 |
 |
 |
This demo will show how ILOG ODMS can help you develop decision support applications that address your company's unique planning and scheduling problems.
|
 |
 |
| |
|
|
 |
 |
 |
 |
ILOG OPL-CPLEX-ODM Hands-on Experience Workshop |
 |
| |
11 December 2008 Austin, TX |
|
| |
|
|
 |
|
 |
|