使用分支和绑定并行化旅行商计划

时间:2013-04-29 20:49:09

标签: parallel-processing traveling-salesman

我正在考虑使用分支和绑定并行化旅行商问题。任何人都可以指导我采取的方法。

1 个答案:

答案 0 :(得分:1)

以下来自Bertsimas和Tsitsiklis的Introduction to Linear Optimization的想法

我认为第一部分不能并行完成(除非你可以并行执行LP解决)

x = BooleanMatrix(num_nodes by num_nodes)  # entry (i, j) is 1 if (i, j) is in tour
c = CostMatrix(num_nodes by num_nodes)  # entry (i, j) is cost of edge (i, j)

solve integer LP: 
    min sum(x .* c)  # component-wise
    subject to:
        sum(i-th row of x) = 1 for all i
        sum(j-th row of x) = 1 for all j

你可以使用例如相对快速地解决这个问题。 GLPK

问题在于约束强制每个节点一个入口和一个出口,但不强加连接。你最终可能会得到一个让你脱节的解决方案。 (例如,5节点图中的(1->2->3->1) (4->5->4)

您现在在路径长度上有一个下限,可以进行分支绑定以查找解决方案,如下所示:

for each edge (t, h) in the tour from the setup:
    solve traveling salesman problem with same graph minus edge (t, h)

新LP与以前相同,只是删除了您使用过的一条边。您可以并行化此循环。