Trip-vehicle matching and vehicle routing optimization for ride-sharing