有多个推销员的旅行推销员?

时间:2011-06-04 20:17:57

标签: algorithm heuristics traveling-salesman

我的问题已经有效地减少为多个推销员的旅行商问题。我有一个从最初位置访问的城市列表,并且必须访问所有销售人员数量有限的城市。

我正在尝试提出一种启发式方法,并且想知道是否有人可以伸出援助之手。例如,如果我有20个城市有2个推销员,我想采取的方法是两步法。首先,将20个城市随机划分为10个城市,每个城市为2个销售人员,我会发现每个城市的旅行,好像它是独立的几次迭代。之后,我想交换或指定一个城市给另一个推销员并找到旅游。实际上,它是一个TSP,然后是最小的完工时间问题。问题在于它太慢了,交换或分配城市的邻里生成很难。

任何人都可以就如何改善上述内容提出建议吗?

编辑:

每个城市的地理位置都是已知的,销售人员在同一个地方开始和结束。目标是最小化最大行程时间,使这种最小完工时间问题。例如,如果salesman1需要10个小时而salesman2需要20个小时,则最长行程时间为20个小时。

8 个答案:

答案 0 :(得分:8)

TSP是一个难题。多TSP可能更糟糕。我不确定你能用这样的特殊方法找到好的解决方案。你尝试过元启发式方法吗?我首先尝试使用Cross Entropy方法:它不应该太难用于你的问题。否则寻找通用算法,蚁群优化,模拟退火...

参见Boer等人的“交叉熵方法教程”。他们解释了如何在TSP上使用CE方法。对您的问题进行简单的调整可能是为每个推销员定义一个不同的矩阵。

您可能希望假设您只想在销售人员之间找到城市的最佳分区(并将每个销售员的最短旅行委托给经典的TSP实施)。在这种情况下,在交叉熵设置中,您考虑每个城市Xi在推销员A:P(A中的Xi)= pi中的概率。你在p =(p1,... pn)的空间工作。 (我不确定它是否能很好地工作,因为你必须解决许多TSP问题。)

答案 1 :(得分:3)

我不会开始为这样复杂的问题编写一个算法(除非是我的日常工作 - 编写优化算法)。为什么不转向像http://www.optaplanner.org/这样的通用解决方案?您必须定义您的问题,程序使用顶级开发人员花费数年时间创建和优化的算法。

答案 2 :(得分:2)

当你开始谈论多个推销员时,我开始考虑粒子群优化。我使用引力搜索算法发现了很多成功。这是我发现的一篇(冗长的)论文。 http://eprints.utm.my/11060/1/AmirAtapourAbarghoueiMFSKSM2010.pdf

答案 3 :(得分:2)

为什么不将多个TSP转换为传统的TSP?
这是一个众所周知的问题(将多个销售员TSP转换为TSP),您可以在其上找到几篇文章。

对于大多数转换,您基本上将您的仓库(销售人员开始和结束的地方)复制到多个仓库(在您的情况下为2),使边缘权重强制TSP重新回到仓库两次,并且然后移除两个仓库并将它们变成一个。

瞧!获得了两次成本之旅,只需要覆盖顶点一次。

答案 4 :(得分:1)

我在阅读问题描述时的第一个想法是对销售人员问题采用标准方法(谷歌搜索适当的方法,因为我从来没有真正为其编写代码);然后取结果并将其分成两半。那么你的算法可能是决定“一半”的位置 - 也许它是一半的城市,或者可能是基于距离,或者可能是某种组合。或者搜索两个城市之间最大距离的结果,并选择它作为推销员#1的最后一个城市和推销员#2的第一个城市之间的分隔。当然它不限于两个推销员,你会分成x件;但总的来说,您的标准1销售员TSP解决方案应该已经在旅行图中将“附近”城市彼此相邻,因此您不必提出单独的分组算法......

无论如何,我确信有更好的解决方案,但这对我来说似乎是一个很好的第一种方法。

答案 5 :(得分:1)

看看this question(562904) - 虽然与你的不一样,但应该有一些很好的思考和参考,以供进一步研究。

答案 6 :(得分:0)

如上面的答案中所述,hierarchical clustering solution可以很好地解决您的问题。但是,在您拥有单个路径之前,不要继续解散群集,而是在有n时停止,其中n是您拥有的推销员数量。您可以通过添加一些“假”停止来改善它,以提高群集在初始群集过于不同的情况下从初始目标均匀分布的可能性。这不是最优的 - 但是你不会为这样的问题找到最佳解决方案。我创建了一个可视化问题的应用程序,然后测试解决方案的许多变体,以了解您的启发式是否足够最佳。

在任何情况下,我都随机化群集,这会导致大多数群集次优。

答案 7 :(得分:0)

只是通过使用遗传算法开始阅读您的问题来到我的脑海。只需使用两个遗传算法同时可以解决如何将城市分配给销售人员,另一个可以解决每个销售人员的TSP。