我正在为C ++中车辆路径问题的变化开发某种启发式方法。
生成解决方案后,我想绘制此解决方案。解决方案是各种旅行的组合,所有旅行都在一个共同的仓库开始和结束。 因此,我有一个顶点集,其中所有坐标和边都由两个顶点id分别定义。此外,我当然拥有顶点对之间的所有距离。
在我的程序中打开一个额外的窗口打开它会很有帮助,但是将图形写入图形文件也应该没问题。
这是一种简单的方法吗?你会如何解决这个问题?
首先,我试图寻找常见的图形可视化软件包(graphviz,tulip,networkx(python)),但我意识到所有这些都专门用于图形布局(当没有坐标时)。当我错的时候纠正我。 我不知道是否有可能告诉这些包我已经有坐标,帮助布局算法。
我接下来尝试的是具有geomview输出的CGAL库 - >直到现在都没有运气 - > ubuntu崩溃了geomview。
还有一个问题:使用一些非布局的2d-plot-libraries冒险绘图是否更好?这在查看时并不是很好(除了缩放之外还有更多内容吗?)或使用一些基于布局算法的库(例如graphviz,tulip,networkx),用顶点之间的距离提供它们,并希望布局算法保持距离,同时以良好的视图方式绘制?
感谢您的所有投入!
的Sascha
编辑:我使用PLplot库(http://plplot.sourceforge.net/)完成了原型实现。结果很好,目前应该足够了。我发现并选择了这个库,因为相关项目(VRPH Software Package / Groer)使用了这个图并且源代码已经分发。因此,实施在很短的时间内完成。在我看来,API有点尴尬和低级别。也许还有更现代的(也许不是基于c的库)库? MathGL? DISLIN?也许我也会尝试一下。
在车辆路线问题中绘制多个巡回赛的好处是“不那么糟糕”的算法往往会发现很好的非重叠和发散的巡回演出,这对眼睛来说真的很好; - )
答案 0 :(得分:2)
目前尚不清楚您要归档的是什么,但如果我正确理解您的问题,那么您可以使用OpenGL来完成。拥有顶点坐标,应该相当容易。
答案 1 :(得分:0)
您可以将Gnuplot与包含解决方案的输入文本文件一起使用。 绘制点(顶点)然后绘制线(代理路径)比链接它们更方便。 为了使绘图脚本更容易,如果数字,您可以为每个车辆分别创建一个文件 车辆是众所周知的。 查看: http://www.cleveralgorithms.com/nature-inspired/advanced/visualizing_algorithms.html