I'm currently suffering from a case of "Man-flu" (A nasty cold) so my ability to concentrate on complicated things is rather limited by brain fog at the moment.
I do not know if people understand the seriousness of the man-flu, but here is a PSA:
I am coming off of another round of man-COVID which is equally as severe, so I empathize.
I keep playing with this in my free time. Added a few more bells and whistles for demonstration. See added buttons at top.
I added a Settings form. Here you can set the desired length of Trips in a path and start time.
I added an export feature for Summary Shipping Plan. This will show how "good" of a plan with number of dead ends (paths less than max desired trips), along with piggybacks. I assume a piggyback is not as bad as dead end, but not sure. If a driver takes a 6 trip path resulting in a dead end (where max is 7) they deliver 6 cars. If they take a 7 trip path with a piggyback they still only deliver 6 cars but it allows them to continue on without using public transportation or another means.
I added an export feature for the Detailed Shipping plan which mimics your spreadsheet with added detail.
Things to do:
Putting my "Operations" hat on, I am guessing at how you would use this. I think if I was going to do this I add another table because there is going to be requirements to create multiple shipping plans for different days with different shipping requirement and potentially different to-from locations.
tblShippingPlan
-planID
-planName
-ShippingDate
Now you can store plans for multiple dates.
I call them edges or trips but I would then modify my current table that has all the edges/trips with start location, end location, distance and times. In this table I would remove the shipping requirement (number of cars). This is now just the reference data to first build the shipping requirements for a plan.
I would then modify my current edges table to be the tblShipingRequirements. Now you would select
tblShippingRequirements
-ShippingRequirementID
-PlanID_FK
-EdgeID_FK
-RequiredToShip
So with this design you first have a form to select the Trips/edges (jobs) for a plan and then assign the required number to ship. This would allow you to build different plans. I assume some days you do not ship from every location.
With the piggybacking you now have the visibility to see who else is going on that same "trip/job" and when they arrive at that location (sort of). This will identify roughly how long to wait for the arriving driver or how long a piggyback driver would have to wait for the passenger. Then I realized there is more to this that could be added. I currently assign the current driver to a piggyback driver, but not yet save in the piggyback driver's record who they pick up. This probably would need to be a child table so that a driver can pickup more than one other driver. Also need to save information on how long the piggyback driver needs to wait for the pickup if they arrive prior to the driver they need to pickup.
Again I assume that drivers start at potentially different times. To synch the piggybacks sometimes a driver would have to wait for ride or passenger if arriving at that location from different trips or time. I realized that this gets complicated because I show running time as just the amount of time for travel from node to node, but to really try to synchronize this it would be Start Time + running trip time + delay for piggybacks + length of time at each drop off. I think this is possible based on the structure just requires work.
With some practice if you use the two subforms on the right it provides good visibility to when a piggyback works. You can see if you piggyback into a node what other paths you can then jump to.
You can see from my plan so far
I did 10 paths of 7 trips with 7 cars deliverd
I did 1 path with 7 trips and 1 PBs and 6 cars delivered
I did 1 path with 7 trips and 2 PBs and 5 cars delivered
On the operational side I am not sure how you handle this, but I think you will often end up like this. The above shows what is left to come into or go out of a location.
The problem is what you do with the remaining. You have some nodes with a lot of cars to ship, but they go to dead ends. Or you have a node with a lot coming in and little or none going out. In my mind maybe you have a company van to do this cleanup. Drop a group of 7 drivers off at several nodes that all go to WD258HL. Pick those 7 up and take them to AL1XB. This alone wipes out more than half the remaining to ship.
Do not know if that is an option.
Or the other option is they get to a dead end and bus/public transportation over to the next delivery point. Adding a bus Trip is doable, with some modification of the code. Currently you can only select another node that the current node connects to. A bus edge could be added that connects any two nodes.