I don't think having "drivers spend as much of their shift as they can driving clients" is the best objective function. It seems like you should want to get customers to their destinations as quickly as possible, not have cars driving around slowly to maximize client drive time.
"You have to leave enough time in-between trips so the driver isn’t late for their next client." also seems bizarre, as you should just be routing the minimal time cost set of vehicles to those awaiting rides. This seems to imply most rides are scheduled pickups?
"You have to leave enough time in-between trips so the driver isn’t late for their next client." also seems bizarre, as you should just be routing the minimal time cost set of vehicles to those awaiting rides. This seems to imply most rides are scheduled pickups?