问题如下:
输入文本文件将包含N行,每行代表一本书。每本书将具有与它相关的G流派,其中1 <= G <= 100。
您要按兴趣因素订购这些书。几本太相似的书很无聊,而太不同的书可能会使访问者感到困惑。因此,每对图书的得分均为MIN(图书i独有的流派,图书i + 1独有的流派,图书i之间的流派)。
有几个文件,其中一个拥有80,000本书
我不熟悉优化(这是我第一次研究这样的问题),想到的第一件事就是简单地创建一个NxN二维数组,其中包含每本书(节点)之间的得分并在每一步中选择最合适的书添加到“路径”中。
但是,由于问题的严重性,我无法创建这么大的阵列。因此,我将问题分解为8个部分,每部分10,000本书,并得以继续执行该想法。不幸的是,完成运行所花费的时间非常长(一个多小时)。虽然分数相当不错。
我尝试了模拟退火,您可以在其中随机切换两本书。我使用的温度为100,000,冷却速度为0.0005。这也花了很长时间,并且得分比其他方法还要差。
我在想,是否有一种方法可以改善这些方法(就所花费的时间而言),或者是否有更好的方法/算法来解决此问题?
谢谢!