Skip to main content

Using ConcurrentMIP

Answered

Comments

3 comments

  • Jaromił Najman
    Gurobi Staff Gurobi Staff

    Hi Tessa,

    What you described as four machines exploring different parts of the B&B tree is distributed optimization. The concurrent optimizer solves the same model on multiple cores/machines with different settings/seeds and finishes whenever one of the runs solves the model to optimality. Due to the different settings/seeds used, a different optimal solution can be found due to different optimization paths if you don't set the MIPGap parameter to 0%.

    As far as I understood, setting ConcurrentMIP=4 means that Gurobi explores four completely different parts of the branch-and-bound tree simultaneously, using 6 threads each?

    Since your machine has 24 cores, this is correct.

    Is it possible that the optimizer finds a parameter setting in the process that is a bit better - like the global optimum rather than a local one (even if it is non-determenistic)?

    It is only possible if you don't set the MIPGap parameter to 0%, because this leaves some room for improvement and given the different optimization paths of the concurrent optimizer, it is possible to find a better solution than by a default run.

    Given your situation and the fact that the Concurrent MIP performs better than the default run, you should consider looking for a few parameters which might improve your performance. You can find information in the documentation of most important parameters for MIPs. Given the long solution time of your model, running the automatic parameter tuning tool does not seem feasible.

    Best regards,
    Jaromił

    0
  • Theresa Reinhardt
    Gurobi-versary
    Conversationalist
    Curious

    Thank you for your answer and I have one last question.

    The concurrent optimizer solves the same model on multiple cores/machines with different settings. . .

    What kind of settings are changed?

    0
  • Matthias Miltenberger
    Gurobi Staff Gurobi Staff

    Hi Tessa,

    Typically, only the random seed is different for the single runs. In most cases, this already provides enough variability compared to the non-concurrent optimization.

    You can also set custom parameters for every single environment using the ConcurrentSettings parameter.

    I hope that answers your question.

    Cheers,
    Matthias

    0

Please sign in to leave a comment.