Limits of CPLEX

2019-09-03 05:36发布

问题:

We have a problem involving 100K variables in the objective function and 1500 conditions. Does CPLEX support such numbers? If so, what are the limits and performance benchmarks of CPLEX?

Regards,

Yash

回答1:

YES.

Quoting a reply from CPLEX developers in this thread, dated in 2010:

CPLEX can handle 30 million variables. 
The more interesting question will be: 
does your machine have enough memory for that. 
CPLEX needs to store lower, upper bounds and objective function coefficients
as double precision values for each variable. 
This results in a storage requirement of at least 30000000 * (8 + 8 + 8) bytes
which are roughly 680 MB.
And then you have variable names, constraints etc.

and then

This is a little subtle to answer as this number may depend on the 
features of CPLEX you use (implicitly). However, CPLEX definitely supports up to 
262,500,000 integral variables (that is the 2,100,000,000
claimed by Roland divided by sizeof(double)) with all features -- 
provided that there is enough memory for that.
The space required for simply creating that many variables would be roughly 6 GB 
(one double precision number for lower bounds, upper bound and 
objective function coefficient).

Performance benchmarks

Here is the official page of Hans Mittelman, with benchmarks on the performance of LP solvers, and here are the mixed-integer linear programming benchmarks (problem description is here).

You will notice that there are a few problems in these sets that are actually larger than your problem.

However, in MIPs (problems with integer variables) your mileage may vary performance-wise. There exist problems with just 200 integer variables in which CPLEX cannot get below 10% gap in an hour of computations. A problem's size is not always a good predictor for a solver's performance.