Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can vroom support a "pick up / drop off / pick up again later" workflow? #370

Closed
shaneparsons opened this issue Jul 29, 2020 · 4 comments
Closed
Labels

Comments

@shaneparsons
Copy link

I've spent a lot of time exploring 3rd party route optimization solutions, in hopes of finding a solution quicker than custom, and it seems that I have a problem that no existing routing software seems to support... e.g.

  • Pick up group_1 from the depot and drop them off at location_1.
    • They will need to be picked up in 1 hour.
  • Pick up group_2 from the depot and drop them off at location_2.
    • They will need to be picked up in 2 hours.
  • An hour has passed and there is one location left. Pick up group_1 from location_1 and take them to location_3.
    • They will need to be picked up in 2 hours.
  • Another hour has passed, pick up group_2 from location_2 and bring them back to the depot.
  • Another hour has passed, pickup group_1 from location_3 and bring them back to the depot.

Essentially I'm given a list of locations that need to be serviced within a day, and what I need to do is the following:

  • determine the optimum order of locations
  • determine how many vehicles will be needed to service these locations within the day (e.g. 8am - 4pm)
  • ensure the drivers are constantly in motion

The root of all my problems seems to come from the fact that my locations have "durations" but my drivers aren't supposed to remain there for those durations... just the cleaners (cargo) that they drop off are. The drivers need to be doing other stuff during and return once those "durations" are over.

I've come to realize that this problem will require a custom solution, but instead of reinventing the wheel completely, is there any way that vroom can accommodate this type of routing / scheduling? Has anybody done this sort of routing with vroom before? Which parts of this workflow (if any) can I delegate to vroom, and which would have to be handled externally?

Any advice to point me in the right direction would be greatly appreciated!

@jcoupey
Copy link
Collaborator

jcoupey commented Jul 30, 2020

Somehow hard to answer without knowing the core reason behind the requirements you list.

If you're OK with fixing pickup/drop-off times within a given range prior to optimization, then you could probably achieve this by modelling your problem using shipment objects. In that case the "after one hour" part would be translated into the next pickup time window being in an acceptable reach from the previous drop-off. Does that make sense for your use-case?

@shaneparsons
Copy link
Author

Hmm, would the optimization accomodate the fact that the driver should be doing other pickup / drop-offs in between, or would it get thrown off by the fact that the driver is already at a future pickup location? For some reason, all of the other optimizers I've tried fall in the latter category.

@jcoupey
Copy link
Collaborator

jcoupey commented Jul 31, 2020

accomodate the fact that the driver should be doing other pickup / drop-offs in between

Theoretically yes, given it's mandatory to do so in order to serve all demands. But I expect that would be the case if you have limited resources (number of vehicles and working hours).

But again fixing time ranges for pickups/drop-offs is probably too much to ask in your use-case: it means you need an a priori scheduling for the cleaners, which probably is why you're looking up optimization options in the first place...

@jcoupey
Copy link
Collaborator

jcoupey commented Aug 25, 2020

Closing as stale, feel free to re-open if required.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants