处理非常大的TSP式问题(超过80,000个项目)

时间:2019-03-06 21:02:21

标签: optimization dynamic-programming traveling-salesman

问题如下:


输入文本文件将包含N行,每行代表一本书。每本书将具有与它相关的G流派,其中1 <= G <= 100。

您要按兴趣因素订购这些书。几本太相似的书很无聊,而太不同的书可能会使访问者感到困惑。因此,每对图书的得分均为MIN(图书i独有的流派,图书i + 1独有的流派,图书i之间的流派)。

有几个文件,其中一个拥有80,000本书


我不熟悉优化(这是我第一次研究这样的问题),想到的第一件事就是简单地创建一个NxN二维数组,其中包含每本书(节点)之间的得分并在每一步中选择最合适的书添加到“路径”中。

但是,由于问题的严重性,我无法创建这么大的阵列。因此,我将问题分解为8个部分,每部分10,000本书,并得以继续执行该想法。不幸的是,完成运行所花费的时间非常长(一个多小时)。虽然分数相当不错。

我尝试了模拟退火,您可以在其中随机切换两本书。我使用的温度为100,000,冷却速度为0.0005。这也花了很长时间,并且得分比其他方法还要差。

我在想,是否有一种方法可以改善这些方法(就所花费的时间而言),或者是否有更好的方法/算法来解决此问题?

谢谢!

0 个答案:

没有答案