我可以合理地期望用GLPK解决什么规模的游览?

时间:2013-08-25 15:08:16

标签: discrete-mathematics linear-programming traveling-salesman glpk integer-programming

我正在玩GLPK提供的travelling salesman example,并试图了解我可以合理期望解决的问题大小。我设法解决了50个节点图,但100个节点似乎没有在合理的时间范围内收敛(现代硬件上30分钟左右)。

GLPK有许多MIP求解器选项。我尝试了各种组合,但我一点也不清楚哪些选项可能会有所帮助。 This page has some discussion但有点过时,建议相当笼统。

期望GLPK在实际时间范围内(例如,不到4小时)解决100个节点或更高的巡回演出是否合理?什么时候问题规模变得棘手? many command-line options中的任何一个可能有帮助吗?

2 个答案:

答案 0 :(得分:1)

  

许多命令行选项中的任何一个都可能有用吗?

tspsol命令行应用程序(基于GLPK C库)或glptsp.h中的C API是为解决TSP而量身定制的。

  

期望GLPK在实际时间范围内(例如,不到4小时)解决100个节点或更高的巡回演出是否合理?什么时候问题规模变得棘手?

我的猜测是,它也很大程度上取决于问题实例。如果您查看the C code,您会看到使用启发式方法生成初始游览。启发式工作得有多好,嗯......


我假设您知道TSP因难以解决而闻名,请参阅computational complexity

答案 1 :(得分:1)

我能够在2秒内解决eil51,并在大约50秒内通过松弛TSP解决了rat99,然后在找到可行的解决方案之前消除子游览。做一个更好的建模将取得更多的解决方案,而不是摆弄解决方案选项。如果建模足够好,GLPK应该能够处理更大的实例。 eil51和rat99是TSPLIB上记录的实例。

我建议阅读一些关于tsp建模的资料,那里有很多文章和书籍。一个很好的起点可能是“应用整数编程”和“应用整数编程”。作者:Der-San Chen等人。