Skip to main content

Improving model formulation and solving time

Answered

Comments

2 comments

  • Mario Ruthmair
    • Gurobi Staff Gurobi Staff

    Hi Koen,

    I quickly scanned through your message and try to answer at least some of your questions:

    • In general, VRPs are notoriously difficult to solve. State-of-the-art algorithms involve some of the most complicated MILP techniques (branch-price-and-cut, many additional valid inequalities, sophisticated algorithms to solve the pricing subproblems, etc.) based on the set partitioning formulation. The Big-M or other compact formulations are usually much less efficient since they provide weak dual bounds.
    • You already did a lot based on the Big-M formulation you have, and there is not much more I can add except for working on the formulation. Although you would probably not obtain the performance of state-of-the-art methods, you can use different modeling approaches that usually perform a bit better. You can find a few ideas in the Jupyter notebooks in this Git repository.
    • If you see a longer break in the output, this usually means that Gurobi launches some other algorithms internally. For model 09 you see a huge jump in the dual bound obtained in such an internal algorithm.
    • model 10: The bound range is not too bad, except for the lower end of the Bounds interval. There seem to be some variable bounds that are at 1e-13. These probably can be rounded off to zero, right?
    • model 10: The ordering phase is part of the barrier algorithm to solve the root relaxation. It is not necessary to improve this since you see below that the root relaxation has actually been solved by another algorithm ("Solved with dual simplex"). By default, barrier and simplex run in parallel and see who solves it first.

    Best regards,
    Mario

    0
  • Koen Timmermans
    • Gurobi-versary
    • Conversationalist
    • Curious

    Hi Mario,

    Thank you for your explanation!

    Based on your Git repository I have changed my formulation to one without using the index k for the vehicles. This reduced the number of variables, constraints and non-zeros dramatically. It was very helpful, thanks!

    The other "problems" that I had also seem to be resolved.

    Best regards,

    Koen Timmermans

    0

Please sign in to leave a comment.