> Continuous Optimization > Solving LPs: Simplex Optimizers > Diagnosing Performance Problems > Lack of Memory |
Lack of Memory |
INDEX PREVIOUS NEXT |
To sustain computational speed, ILOG CPLEX should use only available physical memory, rather than virtual memory or paged memory. Even if your problem data fit in memory, ILOG CPLEX will need still more memory to optimize the problem. When ILOG CPLEX recognizes that only limited memory is available, it automatically makes algorithmic adjustments to compensate. These adjustments almost always reduce optimization speed. If you detect when these automatic adjustments occur, then you can determine when you need to add additional memory to your computer to sustain computational speed for your particular problem. The following sections offer guidance for you to detect these automatic adjustments.
In certain cases, ILOG CPLEX issues a warning message when it cannot perform an operation, but it continues to work on the problem. Other ILOG CPLEX messages indicate that ILOG CPLEX is compressing the problem to conserve memory. These warnings mean that ILOG CPLEX finds insufficient memory available, so it is following an alternate - less desirable - path to a solution. If you provide more memory, ILOG CPLEX will return to the best path toward a solution.
If you observe paging of memory to disk, then your application is incurring a performance penalty. If you increase available memory in such a case, performance will speed up dramatically.
The ILOG CPLEX primal and dual simplex optimizers refactor the problem basis at a rate determined by the ReInv
parameter.
The longer ILOG CPLEX works between refactoring, the greater the amount of memory it needs for each iteration. Consequently, one way of conserving memory is to decrease the interval between refactoring. In fact, if little memory is available to it, ILOG CPLEX will automatically decrease the refactoring interval in order to use less memory at each iteration.
Since refactoring is an expensive operation, decreasing the refactoring interval will generally slow performance. You can tell whether performance is being degraded in this way by checking the iteration log file.
In an extreme case, lack of memory may force ILOG CPLEX to refactor at every iteration, and the impact on performance will be dramatic. If you provide more memory in such a situation, the benefit will be tremendous.
By default, ILOG CPLEX automatically preprocesses your problem before optimizing, and this preprocessing requires memory. If memory is extremely tight, consider turning off preprocessing, by setting the PreInd
parameter to 0
. But doing this foregoes the potential performance benefit of preprocessing, and should be considered only as a last resort. Alternatively, consider turning on presolve compression using the PreCompress
parameter.
Turning off the FinalFactor
parameter may help to avoid exhausting memory when such problems occur at the very end of optimization. For an explanation of that parameters, see Final Factor after Presolve.
Copyright © 1987-2003 ILOG, S.A. All rights reserved. Legal terms. | PREVIOUS NEXT |