Sana.Nz
Sana.Nz

Reputation: 81

How to speed up cplex solution pool?

I have a MIP model that I need to generate its solution pool. Generating this pool takes around 5 minutes but I need to do this pool generation for 100k model, so I need this pool to run at least 8 times faster but unfortunately I don't have any knowledge about speeding up cplex. Is there any settings that I can change in order to make it run faster?Is it possible to make it run in parallel on different CPUs? My pool settings :

    cpx = mdl.get_cplex()
    cpx.parameters.mip.tolerances.integrality.set(0)
    cpx.parameters.simplex.tolerances.markowitz.set(0.999)
    cpx.parameters.simplex.tolerances.optimality.set(1e-9)
    cpx.parameters.simplex.tolerances.feasibility.set(1e-9)
    cpx.parameters.mip.pool.intensity.set(2)
    cpx.parameters.mip.pool.absgap.set(1e75)
    cpx.parameters.mip.pool.relgap.set(1e75)
    cpx.parameters.mip.limits.populate.set(50)

Upvotes: 0

Views: 1125

Answers (1)

Daniel Junglas
Daniel Junglas

Reputation: 5930

Two things come to mind:

  1. Try playing with the MIP emphasis parameter (see here). In particular, try value "4 Emphasize finding hidden feasible solutions". You can also try to crank up heuristics.
  2. If you have more than one core on your machine, then by default CPLEX will use all available cores for solving a model. Instead of throwing all the computing power at one single model you could try to solve several models in parallel, each with a reduced number of threads. For example, if you have 12 cores then you can either solve one model with 12 models or you can solve 4 models in parallel, using 3 threads for each. Depending on how well CPLEX can utilize multiple threads for your instances, the latter approach may be faster.

Upvotes: 1

Related Questions