I'm attempting to switch from JSprit to OptaPlanner for our Vehicle Routing Problem with pickup & delivery + time windows. JSprit is giving sub-optimal results and the process to get there is opaque, and performance is becoming an issue (scheduling 1-2k trips in a batch).
I see a discussion from 2018 discussing some of OptaPlanner's difficulties and performance issues surrounding heterogenous pickup & delivery, but it's not clear whether they've been resolved. Geoffrey has a link to his GitHub repo but it sounds more like a daring experiment than a best practice. I'm having trouble locating a good example of how others have modeled VRPPD + time windows.
The question, really, is: is it possible to model a VRPPD OptaPlanner problem that will perform well with thousands of trips and ~100 vehicles?
Edit: a bit more about the routing problem These are passenger pickups and dropoffs, in any order (allowing double-ups in a vehicle). Typically covering a state-wide area.
Soft Costs:
- Extra passenger time in vehicle
- Driver per-day salary, overtime
- Fuel
- Passenger earlier/later than requested time
- Lunch breaks for drivers
- Preferred vehicle types by passenger
Hard Costs:
- Vehicle capacities (for ambulatory, wheelchair)
- Vehicle features (ramp van)
- Vehicle owner eligibility / billing rules
- Excessive time in vehicle
- Passenger arrives outside normal business hours
- Do-not-share-vehicle for passenger
Additional wrinkles
- Multi-leg trips, where a passenger is picked up at A, makes a 15-minute stop a B, then proceeds to C
I've been impressed by the documentation and performance I've seen in OptaPlanner so far. So I'm optimistic that this will work, but I wish there were more examples or best practices for time-windowed vehicle routing. Building a functional scheduler just to evaluate its feasibility is daunting.