TSP /优化/ CSP算法

时间:2018-04-09 20:29:56

标签: algorithm graph-algorithm mathematical-optimization traveling-salesman constraint-programming

我正在应对类似于旅行商问题但具有优化约束满意度程度的挑战。该算法输入以下变量:

  • 一组点,其中每个点对象具有以下(2000-20000个实例):
    • 坐标(例如纬度和经度)
    • 该点的得分/奖励(严格为正)
    • 时间成本(如果你达到这一点所花费的时间,例如“访问时间”)(严格肯定)
  • 任意两个给定点之间的传播时间(nxn矩阵,其中n是点数)。这不是两点之间距离的直接导数,它考虑了平均交通量和道路网格,您可以通过它从一个点到另一个点。 (严格非负面)
  • 一系列限制,包括以下类型:
    • 必须访问点“X”
    • 您最多只能旅行一次“T”

此外我对表格有限制:如果访问点“X”,则必须在小时“A”和小时“B”之间,但暂时不要考虑它。

我必须实施最大化分数总和的算法(优化),严格考虑定义的限制( CSP )并输出路线(< em> TSP )或我必须以给定顺序访问的一组点。输出将产生(由于输入和限制的特征)一条路线,最多包含15个点,通常约为10个点。

这些是我考虑和探索过的方法:

  1. 聚类 - 通过获取周围点数的分数来计算高分的“震中”。利用该“震中”,将旅行推销员算法应用于“K”周围的点。这些“K”点将通过k-NN算法获得,将“K”增加一(或更多),直到达到最大行程时间条件。

  2. 背包问题 - 由于我有一个最大行程时间限制和一组我可以包含在解决方案中的点,问题与背包问题非常相似。这里唯一的问题是,在计算整个路径(TSP的解决方案)之前,我不知道解决方案的成本(在行程时间内),并且计算背包算法的每次迭代的路线可能在计算上过于复杂。我需要在每次迭代中知道这个成本,因为它是背包容量。

  3. 线性编程 - 以某种方式将问题建模为线性编程问题,并在我的生命周期中获得解决方案。即使使用最好的电脑也许不可能。

  4. 我想过将输入设置为类似加权图的结构,其中每个节点都是一个点,边包含旅行时信息。但它对我没用...

    你有其他方法我错过了吗?

    您如何看待我提出的方法?

    任何帮助将不胜感激,提前谢谢!

0 个答案:

没有答案