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: <br />Depot is in Stuttgart, the arrows show the relations (pickup=freen, delivery=red)
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.
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
Without restrictions - just a single tour with shortest distance
inco.NO.gif (25.53 KiB) Viewed 8454 times
By applying the new ProductIncompatibility() {<br />incompatibilityType = ProductIncompatibilityType.NOT_AT_SAME_TIME,<br />productId1 = 1,<br />productId2 = 2<br />}<br />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.
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
Single tour but not AT SAME TIME
inco.NOT_AT_SAME_TIME.gif (24.7 KiB) Viewed 8454 times
With <br />new ProductIncompatibility() {<br />incompatibilityType = ProductIncompatibilityType.NOT_ON_SAME_TOUR,<br />productId1 = 1,<br />productId2 = 2<br />}<br />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.
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
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