  Even though it is well known that for most relevant computational problems
different algorithms may perform better on different classes of problem
instances, most researchers still focus on determining a single best
algorithmic configuration based on aggregate results such as the average. In
this paper, we propose Integer Programming based approaches to build decision
trees for the Algorithm Selection Problem. These techniques allow automate
three crucial decisions: (i) discerning the most important problem features to
determine problem classes; (ii) grouping the problems into classes and (iii)
select the best algorithm configuration for each class. To evaluate this new
approach, extensive computational experiments were executed using the linear
programming algorithms implemented in the COIN-OR Branch & Cut solver across a
comprehensive set of instances, including all MIPLIB benchmark instances. The
results exceeded our expectations. While selecting the single best parameter
setting across all instances decreased the total running time by 22%, our
approach decreased the total running time by 40% on average across 10-fold
cross validation experiments. These results indicate that our method
generalizes quite well and does not overfit.
