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

Multi-Vehicle Jobs #1231

Open
nzorndorf opened this issue Mar 10, 2025 · 2 comments
Open

Multi-Vehicle Jobs #1231

nzorndorf opened this issue Mar 10, 2025 · 2 comments
Labels

Comments

@nzorndorf
Copy link

nzorndorf commented Mar 10, 2025

Hello,
Is there any way to use VROOM to accomplish multi-worker jobs? i.e. jobs that require 2 or more workers to complete?

I believe there is a hard limitation that only one job can be assigned to one vehicle - and if that is the case, I see two workarounds:

  • Have one vehicle represent multiple workers. The issue with this is that we need to decide ahead of time which workers will be represented by a certain vehicle. And we need to choose whether we include a multi-worker vehicle in the problem instance, or include the individual worker vehicles that would have been otherwise represented by the multi-vehicle worker in the problem instance, and not both, otherwise the workers can be double-booked.
  • Have multiple jobs that are essentially copies of each other, and force them to be assigned at the same time. This is achievable with the time_window argument to the job object constructor, however it requires that I set the time that I would like the job to begin ahead of time. That would potentially be ok, but then I don't believe there is a way to ensure that all jobs related to a multi-worker job are either all scheduled, or none of them are scheduled - unless there is a creative workaround?

Has anyone tackled this situation using VROOM and found a good solution?

@jcoupey
Copy link
Collaborator

jcoupey commented Mar 11, 2025

There is no synchronization mechanism that would force vehicles to be at the same time at the same place in order to handle one (or several) jobs. So I'm afraid your summary is a pretty good description of possible workarounds with their respective limitations...

As for ensuring multiple "duplicate" jobs are either all scheduled or none, that is not directly possible. You could make sure some duplicates are all scheduled using priorities, provided you choose which have to be forced and you have enough resources for those. But you can't totally rule out the risk of partial assignment of duplicate jobs. This would make some kind of pre/post-processing mandatory for part of the decisions if you want to use VROOM for that situation.

@nzorndorf
Copy link
Author

Thanks for your response @jcoupey.
Yes, I believe it's not possible to totally rule out the risk of partial assignment of duplicate jobs, as you said, because even if I give all the duplicate jobs a priority of 100, the solver may choose to assign 2 jobs with priority of 75 to that resource instead of the one job with a priority of 100.

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