ai4co / routefinder

[ICML'24 FM-Wild Oral] RouteFinder: Towards Foundation Models for Vehicle Routing Problems
https://ai4co.github.io/routefinder
MIT License
37 stars 3 forks source link

Expanding Algorithm to More Complex Scenarios #2

Open JY00002 opened 3 weeks ago

JY00002 commented 3 weeks ago

I would like to express my sincere appreciation for the open-source project that you have made available. The work you have done is not only impressive but also incredibly valuable to the community. I have found it to be a great tool for many robotic systems problems. However, I am currently facing a challenge where I need to extend the algorithm to more complex scenarios. Specifically, I am looking to add new base capacities and integrate the algorithm with different types of robotic systems. Here are the details of my inquiry: 1.Adding New Base Capacities: I would like to know if there are any existing mechanisms or modules within the project that can be used to add new base capacities. If not, what would be the recommended approach to implement such features? 2.Integration with Robotic Systems: As I plan to integrate the algorithm with various robotic systems, I am curious about the level of customization and flexibility the algorithm offers in this regard. Are there any considerations or specific requirements I should be aware of when integrating with different robotic platforms? Thank you once again for your outstanding work.

fedebotu commented 2 weeks ago

Hi there, I'm glad you appreciate our work :)

  1. What do you mean by adding base capacities? Do you mean, for instance, how to model different capacities for each vehicle?
  2. This pretty much depends on your case and constraints, so it is hard to know. Could you provide an example?
JY00002 commented 1 week ago

Hi there, I'm glad you appreciate our work :)

  1. What do you mean by adding base capacities? Do you mean, for instance, how to model different capacities for each vehicle?
  2. This pretty much depends on your case and constraints, so it is hard to know. Could you provide an example?

I'm very sorry for not describing it accurately enough, what I meant was: the VRP problem is defined in the article coaxed as a fleet of vehicles (each with capacity Q) departing from a parking lot, serving each customer once, and then returning, with the goal of minimizing the total travel cost.RouteFinder considers a collection of VRP variants that each consist of one or more attributes, resulting in a rich set of routing problems with practical relevance.If our problem is that, for example, a fleet of vehicles has three types, each type of vehicle provides services A, B, and C. For each customer, it is necessary to receive the services in the order of A, B, and C, and then the vehicle returns, with the aim of minimizing the total travel cost. If this is the problem, then we should need to add a new attribute, how to implement it, can it be done under RouteFinder framework?

fedebotu commented 1 week ago

Interesting topic! Are you referring by any chance to the Skill-VRP? If so, @ngastzepeda is working on this right now :)

ngastzepeda commented 1 week ago

Hi @JY00002 , right now in the public rl4co repositors we only have a very basic version of the skill vrp implemented which models vehicles with different skill levels, not skill types. An additional difficulty for your use case are the precedence constraints that you mention, which we also have not implemented yet. We have an idea how to do it, but right now this functionality is not provided in rl4co. Depending on how quickly you need it, we could make it happen - or you would need to find another framework to use.

If you have further questions or would like to contribute to the code, feel free to reach out to me via email!

JY00002 commented 1 week ago

@fedebotu @ngastzepeda Thank you very much for your quick and professional response, which has allowed me to experience the charm of the open-source community, it's really great! I am very much looking forward to your work on the SVRP!

ngastzepeda commented 1 week ago

We are not aware of any other learning-based frameworks that solve this problem yet, but if you are not set on learning-based methods and just want to solve a specific problem, you could have a look at PyVRP. It allows for modelling client groups and vehicles via profiles, but I don't know if you can also model the precedence constraints you mention.

JY00002 commented 1 week ago

We are not aware of any other learning-based frameworks that solve this problem yet, but if you are not set on learning-based methods and just want to solve a specific problem, you could have a look at PyVRP. It allows for modelling client groups and vehicles via profiles, but I don't know if you can also model the precedence constraints you mention.

I have an idea that I'm not sure is feasible, which is to use a mask mechanism for priority constraints. Specifically, for example, when a vehicle with capability B is selecting service targets, it could mask nodes that have not yet received service A, as well as nodes that have already received services B or C. Do you think this approach is applicable to the RouteFinder architecture?

ngastzepeda commented 1 week ago

Yes, I was thinking along those lines, but the precedence constraints themselves would also need to be saved in the TensorDict. For your case the precedence may always be A->B->C, which is easier, because all would be of the same shape and even the same values. But to do this in a general way (i.e. one customer could have A->C, another B->A->D, etc.) we should think a bit more about how to do this in a general, but clean way.

JY00002 commented 1 week ago

I am very much looking forward to your solution.