订单批处理算法-是TSP,如何解决?

时间:2018-08-29 16:17:30

标签: algorithm traveling-salesman

我正在努力解决以下问题:

一个仓库有数百个需要完成的订单。履行订单的第一步是挑选在整个仓库中搁置的产品。工人分16批接单,将全部16个订单的接单分组为一份工作。

对于给定的订单,操作员必须去有限的一组位置才能选择订单所需的产品。这些位置通常会与其他订单所需的位置重叠。因此,理想的做法是创建具有许多重叠位置的批次,以减少工人去的位置。如何为一批选择一组16个订单,以最大程度地减少工人必须去的地点总数?

这似乎是旅行商问题的一种变体。例如,对于100批货物的集合,暴力破解方法将是尝试16个订单的所有(100 choose 16) = 1.3E18组合,然后选择位置最少的集合。这是TSP问题还是还有其他方法?如果是这样,如何使问题更容易解决?


这是问题的简化示例。一共有8个订单:a..h。在所有订单中,产品都存放在7个不同的位置:1..7

订单位置:

a => [1]
b => [2,3,4]
c => [2,3,4]
d => [5]
e => [6]
f => [2,3,4]
g => [2,3,4]
h => [7]

要从这8个池中挑选4个订单,理想的情况是[b,c,f,g],它将路由到位置[2,3,4]

1 个答案:

答案 0 :(得分:0)

这不是一个真正的旅行推销员,因为您可能会多次访问网站,并且可能没有必要重新开始(我不知道)。不要在这里过多地考虑TS理论,而应该考虑找到站点的最佳方法(除非它们已被固定)。您可能希望将喜欢的网站放在离您最近的地方,而将稀有的网站放在更远的地方。

在那之后,考虑额外的行进成本与计算成本。分成多次旅行当然会减少计算量,但可能会增加一些距离(在您的示例中,我们仍然必须访问1、5、6、7)。有许多近似的解决方案可以非常快速地运行,并且可以产生非常接近最优的解决方案。 Christofides的算法是第一个真正的好算法。请参阅Wikipedia文章“旅行商问题”。我研究了这个问题,但是那是在1981年或1982年的大学时期,所以我确信此问题已经得到改善。

祝你好运!