Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Ma/improve solves #46
The key change is tweaks to the branchers to avoid some pathological cases with complex problems.
Choosing the package_versions variable to be INT_VAR_SIZE_MIN causes us to spend a large amount of time permuting variables that don't generate many propagations. Switching that to INT_VAR_DEGREE_MAX causes the solver to focus on the most 'influential' package versions first.
Also included are some refactors; a cleanup to avoid segfaulting with the new timer code.
Finally there's preliminary support for the GIST solve visualization tool; that was very helpful to tune the branchers.
I'm not very familiar with the stuff that interfaces directly with gecode, but it looks sane. I'm a bit wary of potentially changing the solutions we spit out for complicated graphs, but lots of people are suffering from the performance of some of the pathological cases so I think that tips the balance in favor.