Performance difference between v7.8 and v8+ (and v9+) #2989
Replies: 3 comments
-
|
One instance hardly shows anything but still, I let v8.2 run longer on Step 3 and it eventually finds the same solutions in the same order but it takes considerably longer. Step 3 Step 1 is running since 30 minutes but there is no improvement yet, I will update the post when the run is completed. |
Beta Was this translation helpful? Give feedback.
-
|
Here is the result when I let v8.2 run longer. Both v7.8 and v8.2 find basically the same solutions in the same order* but v8 takes a lot longer. (*: Our solution hook prints out the solutions that are improving the best solution up to that point more than 1%. Line 5 and Lines 12-16 have a small difference in the objective function value)
I suspect the performance difference is related to the vehicle breaks because if I remove the vehicle breaks, there is no performance difference between v7.8 and v8.2. I believe the breaks implementation is overhauled at v8.0. |
Beta Was this translation helpful? Give feedback.
-
|
Hi All, Firstly, thank you for this fantastic library. We have noticed a similar performance difference between v7.8 and later versions of OR-Tools during the CloseModelWithParameters() stage, specifically when pickup and delivery constraints are implemented. Initially a data set of 100 pickup and delivery jobs (i.e. 200 pickup and delivery nodes) and 50 vehicles were scheduled using a few different versions of OR-Tools. The time it took to close the model with pickup and delivery constraints in place is as follows:
When running a data set of 542 jobs (i.e. 1084 pickup and delivery nodes) and 159 vehicles with pickup and delivery constraints using version 9.0, the solver had not passed the model closing stage after 30 min. Using version 7.8; however, the time it took to close the model was only 23 seconds and after a 2 minute solve a solution was produced. Note that all data sets made use of time window and capacity constraints and were multi-depot problems. Could you please advise on what the performance difference between versions could be attributed to. Thank you in advance. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
What version of OR-Tools and what language are you using?
Version: v8.2
Language: C++
Which solver are you using (e.g. CP-SAT, Routing Solver, GLOP, BOP, Gurobi)
Routing Solver
What operating system (Linux, Windows, ...) and version?
Ubuntu 18.04
What did you do?
Steps to reproduce the behavior:
What did you expect to see
Productive iterations and comparable final solutions
What did you see instead?
Starting from the same initial solution, v8.2 makes a lot more iterations (13.5K + 6.5K) in 5 + 3 minutes but makes no improvement while v7.8 makes considerably less iterations (388 + 54) but it improves the objective function value 24% and 3% in Steps 1 and 3, respectively and saves an extra vehicle each time.
I did the Step 3 to check if v8.2 accepts the solution found by v7.8 on Step 1 but it is not necessary. The log of Step 1 shows the performance difference clearly. The logs can be seen in this gist https://gist.github.com/senhalil/ab943bf0cae2ae10fba940f3380bfad6 but basically starting from the same initial solution v8.2 cannot find in minutes the solutions found by v7.8 in seconds.
I am not aware of a method to export/dump the routing model but if it is possible, I can share the dumps if needed.
Anything else we should know about your project / environment
Beta Was this translation helpful? Give feedback.
All reactions