旅行推销员有一些限制

时间:2013-02-20 03:47:06

标签: google-maps graph-algorithm traveling-salesman driving-directions

我正试图找到最佳的驾驶方式,比如A,B,C和D

有一些额外的限制 - 必须在其他人之前达到某些要点。说B必须在B之前到达。换句话说,订购一些要点。

如果没有其他限制,Google Maps apis可以帮助您解决此问题。 还有其他服务可以帮助解决这个问题吗?有没有办法用我错过的Google Maps apis来做到这一点?

5 个答案:

答案 0 :(得分:1)

你说google有一个API函数,我们将它命名为bestWay(point a, point b)

您有{A,B,C,D}作为积分,您必须按以下顺序访问它们:

A,C,D,B

找到(A,C)的最佳方式,然后从(C,D)和(D,B)找到最佳方式,并建立自己的方式。

如果在C之前只有约束D,则可能需要检查所有排列:

A->C->B->D
A->B->C->D
...
B->A->C->D

答案 1 :(得分:1)

旅行商问题可以表示为integer programming problem(此链接提供公式)或constraint programming problem,因此您可以使用任何MIP或CP解算器,例如CBC或{ {3}}使用您想要添加的任何额外约束来解决TSP问题。但是,如果您需要在Google地图上绘制结果,则必须使用Google Maps API手动完成。

如果您更喜欢基于网络的解决方案,那么您可以使用Gecode通过NEOS server for optimization访问各种解算器。作为额外的优势,此方法允许使用高级建模语言(例如XML-RPC API)提交问题,而不是直接处理低级解算器API。

答案 2 :(得分:0)

以下是Javascript中的精确求解器:http://www.iaindunning.com/?page_id=39。它使用线性编程和切割平面方法,如http://www.tsp.gatech.edu/methods/dfj/index.html

答案 3 :(得分:0)

http://www.openopt.org/TSP提供了一个关于旅行商问题的开源实现 - 它是用Python编写的。

我已将上述OpenOpt TSP和Google Directions整合在一起,以提供满足您需求的网站(订购限制除外),可在http://www.speedyroute.co.uk/

获取

答案 4 :(得分:0)

查看http://xsolve.info/TSP.html 它是JAVA中的一个程序。您可以修改它以添加自己的约束