30

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

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

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

编辑:

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

4

9 回答 9

12

TSP是一个难题。多 TSP 可能更糟。我不确定您是否可以使用这样的临时方法找到好的解决方案。您是否尝试过元启发式方法?我会先尝试使用交叉熵方法:用它来解决你的问题应该不会太难。否则寻找通用算法,蚁群优化,模拟退火......

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

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

于 2011-06-04T20:41:12.383 回答
3

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

于 2011-06-04T20:41:10.337 回答
2

你为什么不把你的多 TSP 转换成传统的 TSP?
这是一个众所周知的问题(将多个推销员 TSP 转化为 TSP),你可以找到几篇关于它的文章。

对于大多数转换,您基本上将您的仓库(销售人员开始和完成的地方)复制到几个仓库(在您的案例 2 中),以强制 TSP 两次返回仓库的方式制作边缘权重,然后删除两个仓库并将它们合二为一。

瞧!得到了两分钟的成本游览,恰好覆盖了一次顶点。

于 2011-07-15T18:09:03.357 回答
2

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

于 2015-08-01T19:49:59.443 回答
1

阅读问题描述时,我的第一个想法是使用标准方法来解决推销员问题(谷歌搜索合适的方法,因为我实际上从未为此编写代码);然后把结果分成两半。然后,您的算法可能是决定“一半”在哪里——可能是城市的一半,或者它可能基于距离,或者可能是某种组合。或者搜索两个城市之间最大距离的结果,并选择它作为推销员#1 的最后一个城市和推销员#2 的第一个城市之间的间隔。当然不限于两个推销员,你会分成x块;但总体而言,您的标准 1 推销员 TSP 解决方案应该已经在旅行图中获得了彼此相邻的“附近”城市,所以您不需要

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

于 2011-06-04T01:57:01.327 回答
1

看看这个问题(562904) - 虽然与你的不同,但应该有一些很好的思考和进一步研究的参考资料。

于 2011-06-04T20:32:33.673 回答
0

正如上面的答案中提到的,层次聚类解决方案非常适合您的问题。然而,不要继续解散集群直到你有一个单一的路径,而是在你有 n 时停止,其中 n 是你拥有的销售人员的数量。如果初始集群过于分散,您可能可以通过添加一些“假”停靠点来改进它,以提高集群最终与初始目的地均匀间隔的可能性。这不是最优的——但你不会为这样的问题找到最优的解决方案。我会创建一个可视化问题的应用程序,然后测试解决方案的许多变体,以了解您的启发式方法是否足够最优。

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

于 2011-06-04T20:47:24.063 回答
0

刚开始使用遗传算法阅读您的问题,我就想到了。只需同时使用两种遗传算法,一种可以解决如何为销售员分配城市,另一种可以解决您拥有的每个销售员的 TSP。

于 2011-06-04T20:50:10.200 回答
0

自从提出这个问题以来,已经完成了一些工作。

要开始构建您自己的解决方案,您可以从这里开始: https ://www.tandfonline.com/doi/full/10.1080/21642583.2019.1674220

于 2021-12-22T00:04:08.213 回答