Routing a Heterogeneous Fleet of Vehicles