我正试图找到最佳的驾驶方式,比如A,B,C和D
有一些额外的限制 - 必须在其他人之前达到某些要点。说B必须在B之前到达。换句话说,订购一些要点。
如果没有其他限制,Google Maps apis可以帮助您解决此问题。 还有其他服务可以帮助解决这个问题吗?有没有办法用我错过的Google Maps apis来做到这一点?
答案 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中的一个程序。您可以修改它以添加自己的约束