General Routing
There are many factors that restrict real-world problems from fitting an academic definition of the problem. For this reason, we’ve split out the layers of the problem to give you complete control over the model you’d like to run.
Simple examples of real-world features that don’t fit academic definitions are:
- multiple capacitated dimensions (i.e. mass, volume and height)
- multiple dimension windows (such as multiple time windows)
- different vehicle travel speeds
- different vehicle capacities
- different vehicle shifts
- location times as well as task times
- fatigue rules specific to each vehicle
- location or task times specified by vehicle
- multiple depots where orders could be serviced from either depot
- compartment constraints
- axel-load constraints
Just to name a few.
This is not to say that there aren’t ways of extending the academic problems to handle these kinds of features - but at that point it makes more sense to separate the feature from the problem - otherwise we end up with acronyms that are seriously long and hard to parse :-)
The IVR is the next section in this documentation and will dive into how to express each of the layers of the model to give you control over the problem you’d like to solve. There are currently two IVR schemas available. The first is the IVR7 which covers a large chunk of routing functionality. The IVR8 schema can do everything the IVR7 does, but can also accommodate compartment modelling. Migrating from IVR7 to IVR8 is really easy as most model definitions are identical where a definition is common. We recommend starting with the IVR7 schema and mastering the basics before progressing to the more complex model.
Each layer is described as its own modelling context given that you’re now familiar with the basics of TSPs and VRPs. Happy modelling!