Page 1 of 1
HOW TO consider incompatible products in tour planning
Posted: Thu Nov 10, 2016 1:40 pm
by Bernd Welter
Hello there,
today a customer asked me whether it is possible to consider the following constraint in a tour optimization:
- His orders are dealing with some products (ProductId = 1, 2, ...)
- The server has to ensure that some of the products are not on a truck at the same time (1=Sheep, 2=Wolves).
- Sometimes the products are not allowed to be picked on the same tour (do not pick 2=milk after delivering 1=oil)
We can take care of such constrains by using the ProductIncompatibility.
I created a little scenario that shows what the effects of this feature are.
- The global setup of the scenario:
Depot is in Stuttgart, the arrows show the relations (pickup=freen, delivery=red) - inco.gif (24.25 KiB) Viewed 8454 times
Imagine that we have two AB orders:
- the Depot is located int Stuttgart
- ORDER 1 : a single item of product 1 is brought from Karlsruhe to Berlin
- ORDER 2 : a single item of product 2 is brought from Hamburg to Munich (=München)
Here are the results - the total distances of the tours and chains are mentioned in brackets.
- Without enforcing the separation of the products the potential of optimization is the highest one. The two orders are picked up in a row and delivered afterwards.
- Incompatible-NO.PNG (7.74 KiB) Viewed 8454 times
- Without restrictions - just a single tour with shortest distance
- inco.NO.gif (25.53 KiB) Viewed 8454 times
- By applying the new ProductIncompatibility() {
incompatibilityType = ProductIncompatibilityType.NOT_AT_SAME_TIME,
productId1 = 1,
productId2 = 2
}
the server ensures that both products are not on the truck at the same time but he doesn't have to get back to the depot between the orders. - Incompatible-NOT_AT_SAME_TIME.PNG (7.83 KiB) Viewed 8454 times
- Single tour but not AT SAME TIME
- inco.NOT_AT_SAME_TIME.gif (24.7 KiB) Viewed 8454 times
- With
new ProductIncompatibility() {
incompatibilityType = ProductIncompatibilityType.NOT_ON_SAME_TOUR,
productId1 = 1,
productId2 = 2
}
the server has to get back to the depot before taking care of the other order. So in the end there have to be TWO tours instead of one. - Incompatible-NOT_ON_SAME_TOUR.PNG (9.1 KiB) Viewed 8454 times
- Not even at same tour - worst distance
- inco.NOT_ON_SAME_TOUR.gif (25.49 KiB) Viewed 8454 times
I hope this shows that you can solve the customers usecase.
Best regards Bernd
Re: HOW TO consider incompatible products in tour planning
Posted: Tue May 16, 2017 8:34 am
by columbs
Hello Bernd,
thank you for your explanation. We want to implement this solution in order to solve a usecase, and I have made some experiments on the rawrequestrunner.
In the request I have 4 orders with product 1 and 3 orders with product 2.
When I set productincompatibility "NOT_AT_SAME_TIME", xTour plans only the orders for 1 product but not the other ones.
The strange thing is: if I give an input plan, I get no errors. Any Idea what's wrong here?
Thank you very much for your help!
Sebastiano
Re: HOW TO consider incompatible products in tour planning
Posted: Tue May 16, 2017 11:34 am
by Bernd Welter
Hello Sebastiano,
I tested your requests with xTour 1.24. Both scenarios return 100% scheduled orders.
I assume this is related to the latest version of xTour but I raised an internal JIRA to get a statement from DEV department.
Best regards
Bernd
Re: HOW TO consider incompatible products in tour planning
Posted: Mon May 22, 2017 8:27 am
by Bernd Welter
Quick feedback from DEV:
From 1.24.0.0. to 1.24.0.1 we improved/fixed this:
1.24.0.1
Improvement: Shorter reaction time in case of cancelling an area tour planning (e.g. by limiting the available machine time).
Bugfix: If there are no priorities at all orders present, this is now correctly considered in the planning algorithm.
According to Haba this (#2) is probably the reason why the latest version returns the desired results.
Best regards Bernd